在下面的代码中,为什么pdList[0]
为null而_propertyDetails
是一个正确实例化的对象?我的印象是我添加了对pdList
的引用,指向与_propertyDetails
相同的对象,因此在实例化此对象后,两个引用都应该为非null?
PropertyDetailsModel _propertyDetails = null;
var pdList = new List<PropertyDetailsModel> { _propertyDetails };
_propertyDetails = PropertyDetailsModel.Read(PropertyId);
如果我遗漏了一些基本的东西,请原谅我;我一直在努力将我的问题缩小到这个问题几个小时,我的大脑已经累了。
答案 0 :(得分:5)
初始化列表时,列表中的_propertyDetails
不是_propertyDetails
,而是 null
当前对的引用({{1}在这个例子中,但重点仍然是)。让_propertyDetails
稍后引用不同的东西不会改变列表中的内容。
答案 1 :(得分:4)
它(显然)是一种引用类型,因此当您创建pdList
时,引用会被复制,但此时它是null
。稍后分配到_propertyDetails
不会更改null
中已有的pdList
引用。
答案 2 :(得分:2)
_propertyDetails
不是正确实例化的对象。它根本不是一个对象。它是一个引用,指向C#中称为null
的任何内容。要获得一个对象,您必须编写类似
PropertyDetailsModel _propertyDetails = new PropertyDetailsModel();
答案 3 :(得分:2)
正如其他人所说,你对变量及其价值感到困惑。您不需要使用列表来演示这一点 - 它等同于此代码:
string foo = null;
string bar = foo;
foo = "Hello";
Console.WriteLine(bar); // Empty, as the value of bar is null
更改变量的值与更改变量引用的对象中的数据不同。