c#中引用类型传参使用ref和不使用ref的区别

  • .net core

//我们知道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 等同于吧方法外部对象的引用指针直接传到方法内部 不用再新建一个指针,相同的指针也就是指向同一个堆内存地址

//直接传入引用类型对象,会在方法内再次创建一个新的指针来指向传入对象的堆内存地址,也就出现了 两个不同的指针指向同一个堆内存地址