static void Main(string[] args)
{
List<string> list = new List<string>();
list.Add("1");
string tmp = list[0];
tmp = "0";
Console.Write(list[0]);
string tm = "1";
list[0] = tm;
tm = "0";
Console.Write(list[0]);
Console.Read();
}
输出结果:?
why?
{
List<string> list = new List<string>();
list.Add("1");
string tmp = list[0];
tmp = "0";
Console.Write(list[0]);
string tm = "1";
list[0] = tm;
tm = "0";
Console.Write(list[0]);
Console.Read();
}
输出结果:?
why?
list.Add("1"); 往链表加一个值“1”
string tmp = list[0]; 声明一个变量赋值为1
tmp = "0";改为0
Console.Write(list[0]); 这里输出还是list[0]的值
string tm = "1"; 声明为1
list[0] = tm; list[0]此时为1
tm = "0"; 改为0
Console.Write(list[0]);
Console.Read();
tmp和list[0]不指向同一个内存空间,你改变一个不会影响另一个
List<int> list = new List<int>();
list.Add(1);
int tmp = 2;
list[0] = tmp;
Console.Write(tmp);
Console.Read();
你看输出几??
是2!
string tmp = list[0];
tmp = "0";这个过程只是tmp的值变化了,
string tmp = list[0];
tmp =5;
list[0] =tmp;
这样list[0]的值才变化了。楼主是没有掌握赋值语句吧,赋值语句 也就是 = ,是把后边的变量给了前边的变量,而后边的变量并没有改变。
http://www.cnblogs.com/aaronbao/archive/2010/03/14/1685418.html