在下面的代码中,我在基类中有一个属性,它返回自定义对象的列表。在父类中,我覆盖了这个属性,并且在覆盖的定义中,我从基类访问对自定义对象列表的引用,并向其中添加2个对象。覆盖基本属性并访问基准中的引用
在返回之前,我在代码中放置了一个断点并检查基本属性的内容,并注意到两个新对象不存在。然后,我尝试将本地对象列表的引用存储在本地,并再次在列表中添加两个对象。我注意到在本地引用中添加了2个新对象。
但是,使用这两种方法我指向相同的引用,所以我应该能够通过引用base.TestProperty添加对象。任何想法为什么这不起作用?
public override List<CustomObject> TestProperty
{
get
{
List<CustomObject> temp = base.TestProperty;
CustomObject obj1 = new CustomObject()
{
Name = "My Name"
};
CustomObject obj2 = new CustomObject()
{
Name = "Your Name"
};
// Adding to the base list
base.TestProperty.Add(obj1);
base.TestProperty.Add(obj2);
// Adding to temp list, which still points to the base list
temp.Add(obj1);
temp.Add(obj2);
// Base object doesnot contain obj1 and obj2, but the temp object does.
return base.TestProperty;
}
}
实施base.TestProperty的PLS – Will
听起来base.TestProperty返回'新列表()'。 –
您尚未提供足够的代码来重现您描述的问题。 – Servy