//我们知道c#中引用类型传参,参数有发生改变,都会生效,代码如下
1. 先建立一个两个函数的类
public class MyTest { public void MytestFunc(List<int> listint) { listint.Add(6); foreach (var item in listint) { Console.WriteLine(item); } } public void MytestFunc(ref List<int> listint) { listint.Add(6); foreach (var item in listint) { Console.WriteLine(item); } } }
2.传入参数查看打印结果
var lists=new List<int>(); lists.Add(1); lists.Add(2); lists.Add(3); new MyTest().MytestFunc(lists); new MyTest().MytestFunc(ref lists); //两个方法运行的结果 lists的值都发生了改边 值都是 1,2,3,6
# 总结 参数传递引用类型的时候 用ref 和不用ref的区别
//用了ref 等同于吧方法外部对象的引用指针直接传到方法内部 不用再新建一个指针,相同的指针也就是指向同一个堆内存地址
//直接传入引用类型对象,会在方法内再次创建一个新的指针来指向传入对象的堆内存地址,也就出现了 两个不同的指针指向同一个堆内存地址