class Program
{
static void Main(string[] args)
{
Cows cow1 = new Cows();
Cows cow2 = (Cows)cow1.Clone();
Console.WriteLine(cow1==cow2); //FALSE 理解
Console.WriteLine(cow1.MyClass==cow2.MyClass); // TRUE 理解
Console.WriteLine(cow1.MyList == cow2.MyList); // FALSE 不理解,不是应该和上一条语句一样是TRUE么
Console.ReadKey();
}
}
class Cows : CollectionBase, ICloneable
{
public MyClass MyClass { get; }
public object Clone()
{
return MemberwiseClone();
}
public IList MyList { get { return List; } }
}
class MyClass
{
}
按照浅复制的规则,cows2中的引用属性MyClass和MyList和cows1中相应属性应该引用同一个对象,为何我跑出来的结果是如上代码注释中的结果
也就是说,MyClass复制后是引用同一个对象,而MyList是复制后是引用了另外一个对象。这是什么原因?