对于C#中b=a的N种情况分析
2010-09-30 21:00:39 来源:WEB开发网结论:问题集中在b=a这句话上。这时b指向的是a的一份copy,指向全局堆栈上的与a不同的地址。所以b和a是没有任何关系的,b不随a的改变而改变。
2) 集合
1.集合中一笔数据的增删修改。
List<UserInfo> a = new List<UserInfo>();
List<UserInfo> b = a;
a.Add(new UserInfo() { UserName = "Baobao", Age = 27 });
Console.WriteLine("b.Count after adding: " + b.Count);
Console.WriteLine();
Console.WriteLine("After modifying a[0]");
a[0].UserName = "AndersLiu";
a[0].Age = 30;
Console.WriteLine("b[0].UserName: " + b[0].UserName);
Console.WriteLine("b[0].Age: " + b[0].Age);
Console.WriteLine();
a.Remove(a[0]);
Console.WriteLine("b.Count after deleting: " + b.Count);
输出结果:
结论:b随着a中数据增减修改而变化。因为b和a指向托管堆上同一个List<UserInfo>实例的内存地址,这和复合类型是一样的。
数组就不说了,可以看作是多个变量的集合,所以按照集合来处理。写了几段测试代码,放在Demo中。
更多精彩
赞助商链接