我写了以下代码:
void f(List<int>a)
{
a==null;
}
void main()
{
List<int> b=new List<int>();
f(b);
if(b==null)
{ Console.writeLine("b为空");
else
{{ Console.writeLine("b不为空");}
}结果是不为空,看上去是值传递
但是如果f函数是给list增加删除元素,却能改变b,这又像引用传递了
分清楚list引用本身和它的内容两者的关系。
引用本身按值传递,因此你指向另一个对象或者空不会起作用
但是引用的对象本身状态则可以被修改。
不小心多写个等号的现象我也有,下次注意点就行