为了账号安全,请及时绑定邮箱和手机立即绑定

C# 重写 List<T> 添加方法来检查列表是否为空

C# 重写 List<T> 添加方法来检查列表是否为空

C#
素胚勾勒不出你 2023-08-20 14:39:27
我想弄清楚这是否可行/正确的语法使其工作。我想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我想通过执行以下代码来解决这个问题。但是,我不知道是否/什么语法可以实现这一点。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; }}** 我知道我可以在执行之前进行空检查someClass.Notes == null并将其分配给,但我想在属性级别执行此操作,这样我就不必每次需要添加时都复制这两行代码新笔记。new List<Note>().Add(newNote)
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

最好在构造函数中初始化列表MyClass


public class MyClass

{

    public MyClass()

    {

        Notes = new List<Note>();

    }

}


查看完整回答
反对 回复 2023-08-20
?
郎朗坤

TA贡献1921条经验 获得超9个赞

让我们介绍一下支持字段 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>();

        }   

    }

}


查看完整回答
反对 回复 2023-08-20
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信