List<string> a = new List<string>();
a.Add("ASDFADF");
List<string> b = a;
b = null;为什么a依然还有值?
a.Add("ASDFADF");
List<string> b = a;
b = null;为什么a依然还有值?
解决方案 »
- 读取记录分页数据库读取问题:利用rownum,还是利用datatable的select
- 那位remoting的高手告诉我这个问题怎么解决 我是在本机上面开发的
- 有关checkbox的问题
- 怎么把数据库的某一条记录保存到记事本
- VS2005中的窗口设计界面和code界面如何互换?
- c#中如何定义一个const回调函数数组并初始化?
- 豁出去了:异步+阻塞+缓冲区过小的问题
- 主窗體與子窗體間傳遞參數問題---陏悶中!!!!!1
- 高分求教控件应用问题
- SQL Server的复杂查询,希望各位指教!
- 设置 FormBorderStyle.None 时,子窗体首次加载不能最大化。要第二次才可以
- wm6.5 如何用代码实现获得本机的短信中心号,急急急急急急!!!
这是让另一个List<string>指向a,不是对a进行拷贝。你可以把这样的赋值语句,当成是建立一根指向目标的指针。b = null;
这是让b指向为空,不是把指向的List<>清空
student1.name = "ASDF"; Student student2 = student1;
student2.name = "!@##!@";
这个时候student1.name和student2.name是一样的,都是指向了同一个东西,为什么List不是的呢?
List<string> a = new List<string>();
a.Add("ASDFADF");
List<string> b = a;
a = null;
这很明显,
b=a其实相当于把a保存的指针赋值给了b,这样a和b同时指向一个地址
当你把b重新赋值时,a里的地址没有变化,所以a仍然指向List<string>
List<T>是不是引用类型,如果是的话,更改了其中的一个值,另外一个也得改变。也就是a也得为null.
List<string> a = new List<string>();
a.Add("ASDFADF");
List<string> b = a;
b = null;
Student student1 = new Student();
student1.name = "ASDF"; Student student2 = student1;
student2.name = "!@##!@";
实际上是 b=*a;
并不是b=a
List<int> A = new List<int>() {"ax", "bx", "cx"};
这里的new List<int>() {"ax", "bx", "cx"}相当于一个装了3块蛋糕ax、bx、cx的盘子P
A相当于准备用于就餐的一把勺子,现在放到了P边上就绪。然后 List<int> B = A; ,相当于给之前的那个盘子P边上又添上一把勺子。接着,你既可以用A吃盘子P里的蛋糕,也可以用B来吃。无论用A或者B,你吃到的都是P里的蛋糕。最后,B = null; ,相当于把勺子B扔在一边,只留下勺子A用来吃蛋糕了。假设此前你用B吃掉了蛋糕ax,则此时,盘子P里只有蛋糕bx和cx了,并不会因为你把勺子B扔了就会再多出一块蛋糕ax来。好累……
student1和student2都是指向相同的内存地址的引用.当改变student2的属性的时候,其实在调用student1的属性的时候,值也变了,因为内存中的数据变了。