【发布时间】:2015-04-30 06:47:35
【问题描述】:
使用.Add 将类的实例添加到泛型列表不起作用。
为了说明问题,这里有两个简单的示例类:
public class WorkOrder
{
private List<Note> _Notes;
public List<Note> Notes
{
get
{
return _Notes ?? new List<Note>();
}
set
{
_Notes = value;
}
}
}
public class Note
{
public string NoteText { get; set; }
public System.DateTime Time { get; set; }
public string User { get; set; }
}
您可能会注意到WorkOrder.Notes 属性上get 中的编码。我把它放进去,这样属性就不会被初始化为空值(参考我在 SO here 上发布的另一个问题的答案)。
要使用这些类:
public void Test()
{
WorkOrder tempWorkOrder = new WorkOrder();
Note tempNote = new Note()
{
User = "Aaron",
Time = DateTime.Now,
NoteText = "Work Order pulled from CSV Excel report."
};
tempWorkOrder.Notes.Add(tempNote);
}
我希望Test() 中的最后一行将tempNote 添加到tempWorkOrder 中的Note 列表中。但是,tempWorkOrder.Notes 在此行完成后为空。不会抛出任何错误或异常。
我正在使用 VS2013 Express。
我做错了什么?
【问题讨论】:
-
我不会懒惰地创建列表的实例 - 你可能会导致一些意想不到的行为。
-
返回_Notes ??新列表();如果 _Notes 不为 null,则执行以下操作,如果为 NULL,则创建并返回一个新列表,但从未分配给 _Notes。
标签: c#