永远不应返回 null 的 List 属性的 C# 快捷方式

标签 c# accessor

为了确保列表属性永远不会返回 null,我这样声明它:

    private IList<Item> _myList;

    [NotNull]
    public IList<Item> MyList
    {
        get { return _myList ?? new List<Item>(); }
        set { _myList = value; }
    }

这行得通,但我讨厌语法。考虑到我应该在我的项目中广泛使用这种技术,我正在寻找一种更好的方法来编写这个或更好的解决同一问题的方法。有什么想法吗?

最佳答案

这是一个很好的方法,但是每次需要 MyList 并且 _myList 为 null 时,您将创建一个新的空列表...所以如果 _myList 为空,有人执行 MyList.Add(item); 它不会被添加到正确的列表中。

最好这样做:

private IList<Item> _myList;

[NotNull]
public IList<Item> MyList
{
    get { return _myList ?? (_myList = new List<Item>()); }
    set { _myList = value; }
}

这样,第一次 _myList 为空时,您创建了一个新列表。然后,_myList 将不会为 null。

关于永远不应返回 null 的 List 属性的 C# 快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41444789/

相关文章:

javascript - 每次删除一个元素时如何重置 id?

objective-c - 键值编码是否支持声明的属性的自定义访问器名称?

C#运行参数中有多个空格的进程

c# - 访问 SQL CE 数据库的线程安全方式

c++ - 使用类 [错误] ld 返回 1 退出状态

c# - 以字符串形式访问对象属性并设置其值

c++ - 分配和检索的括号过载;常量,引用

c# - 使用包含协变类型的项目的访问器在单元测试项目中构建失败

c# - 我收到有关使用不同线程的错误消息?

c# - 帮助 C# LINQ 投影