考虑我们正在上课,如下所示
public class Hotel
{
public List<Room> lstRooms;
public List<Room> objLstRoom = new List<Room>();
}
如果我为这个酒店类创建一个对象,
答案 0 :(得分:3)
第一个是null
。第二个不是。
答案 1 :(得分:2)
如果您没有为会员分配任何内容,则会为其分配默认值,因此它等于写
public class Hotel
{
public List<Room> lstRooms = default(List<Room>);
public List<Room> objLstRoom = new List<Room>();
}
对于参考类型,默认为null
,因此第一个变量将变为null
。
其他列表怎么样,它会被初始化,但是如你所说的那样仍然是空的。
答案 2 :(得分:2)
lstRooms
为null
,但objLstRoom
为空列表。如果您访问lstRooms
,您将获得空引用异常。
答案 3 :(得分:2)
List<Room> lstRooms
将是null
和List<Room> objLstRoom = new List<Room>()
将是一个空列表所以第一个是一个有0个房间的酒店,第二个是没有定义房间的酒店。
在null
List
上调用实例方法会导致崩溃:
int count = lstRooms.Count; // crash because lstRooms is null
但
int count = objLstRoom.Count; // => 0
那么什么是更好?我总是喜欢一个空列表。
因为这很糟糕:
if(hotelInstance.objLstRoom != null)
{
foreach(va room in hotelInstance.objLstRoom)
/* .... */
}
这是更好的
foreach(va room in hotelInstance.objLstRoom)
/* .... */
答案 4 :(得分:1)
lstRooms
将为空,objLstRoom
将为空List<Room>
,无元素。
这意味着,例如,lstRooms.Add(new Room())
将抛出空引用异常,objLstRoom.Add(new Room)
将起作用。
答案 5 :(得分:1)
您的代码相当于:
public class Hotel
{
public List<Room> lstRooms;
public List<Room> objLstRoom;
public Hotel()
{
objLstRoom = null; // Default initialization in .NET
objLstRoom = new List<Room>()
}
}
答案 6 :(得分:0)
What would be the difference between these two variables in that object?
lstRoom
为null
,objLstRoom
为empty list
。
Since list would be empty initially, what would have been stored in it?
lstRoom
或objLstRoom
都不会存储任何内容。
答案 7 :(得分:0)
public class Hotel
{
public List<Room> lstRooms; // null
public List<Room> objLstRoom = new List<Room>(); // empty list
}
回答你的问题:
该对象中这两个变量之间有什么区别?
lstRooms为null,objLstRoom为空列表。
由于列表最初会为空,会存储哪些内容?
它不会存储任何内容。
答案 8 :(得分:0)
我一直试图将其视为一个盒子。
所以public List<Room> lstRooms;
是一个空盒子。它有足够的空间来容纳其中的房间对象列表,但它实际上并不包含列表。 (尚)
public List<Room> objLstRoom = new List<Room>();
是一个包含房间清单的方框。调用构造函数,这是一个非常大的区别。
在第一个示例中,您将创建对列表的引用。就像一个指针,但第二个例子,你实际上是在创建一个列表。
如果您尝试调用lstRooms.Add(new Room());
之类的内容,则会出现未分配的变量错误,因为要添加新房间的对象不存在。 objLstRoom.Add(new Room())的位置;会工作得很好。