C# 一个类的两个实例 共用变量吗? 比如:类A有两个实例 B 和 C, 相继实例化之后,分别向他们传递变量 LIST[ ] B 和 LIST[ ] C ,然后程序运行时,动态不定时取LIST 中的值,最后却发现 LIST[ ] B 和 LIST[ ] C 混淆起来了,成为了一个新的混合 LIST B+C,然后实例B 和C 共用了 LIST B+C。为什么会出现这样的情况呢,C# 一个类的两个实例 共用变量吗?
有什么解决办法?求指点,有详细代码最好。 ------解决方案-------------------- 因为List中放的是对象的引用,作用于一个,会影响所有的,比如:
class A
{
public int i;
}
A a = new A();
a.i = 3;
List<A> list1 = new List<A>();
list1.Add(a);
List<A> list2 = new List<A>();
list2.Add(a);
list1[0].i = 4;
Console.WriteLine(list2[0].i); // 结果是4,而不是3,也就是说修改list1[0]同样影响到了list2[0],因为它们都是a的引用。 ------解决方案-------------------- 可以百度一下值传递,引用传递,你就明白为什么会是这样了 ------解决方案--------------------
A a = new A();
a.i = 3;
List<A> list1 = new List<A>();
list1.Add(a);
a = new A();
a.i=3;
List<A> list2 = new List<A>();
list2.Add(a);
list1[0].i = 4;