dvo*_*dvo 3 c# overriding list
我想弄清楚这是否可行/使其正确运行的正确语法。null在属性级别添加新项目时,我想对列表进行检查,而不是null每次去列表中添加项目时都要进行检查。例如:
MyClass someClass = new MyClass()
{
MyClassID = 1,
Notes = null
};
//
//
Note newNote = new Note()
{
NoteID = 1,
Text = "Test note"
};
someClass.Notes.Add(newNote); // This line will throw an error because
// someClass.Notes is null
Run Code Online (Sandbox Code Playgroud)
我想通过执行以下代码来解决此问题。但是,我不知道是否/什么语法使之成为可能。
public class MyClass
{
public int MyClassID { get; set; }
public List<Note> Notes
{
get; set;
public void Add(Note note)
{
if (this.Notes == null)
this.Notes = new List<Note>();
this.Notes.Add(note);
}
}
}
public class Note
{
public int NoteID { get; set; }
public string Text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
**我知道我可以在执行操作之前对null进行检查someClass.Notes == null并将其分配给我new List<Note>(),.Add(newNote)但是我想在属性级别执行此操作,因此我不必每次都需要添加这两个代码行时就复制新笔记。
Ant*_*e V 12
最好在的构造函数中初始化列表 MyClass
public class MyClass
{
public MyClass()
{
Notes = new List<Note>();
}
}
Run Code Online (Sandbox Code Playgroud)
让我们介绍一下支持领域 private List<Note> m_Notes:
public class MyClass
{
public int MyClassID { get; set; }
// Empty list by default
private List<Note> m_Notes = new List<Note>();
public List<Note> Notes
{
get
{
return m_Notes;
}
set // If you really want "set" in the context
{
// Assign empty list if value is null
m_Notes = value ?? new List<Note>();
}
}
}
Run Code Online (Sandbox Code Playgroud)