2

说我有这个:

private list<myClass> myCollection;

是否有一种编程习惯可以将这种非常常见的语句组合缩短为一条语句?:

   if (myCollection == null)
      myCollection = new list<myCollection>();

   myCollection.Add(someInstanceOfMyClass);

该成语可以描述为“必要时创建,然后添加”

TIA。

4

2 回答 2

4

为什么不简单地在声明时创建?:

private readonly List<myClass> myCollection = new List<myCollection>(); 

实例化单个列表不是一件耗费时间或内存的事情。(如果你有成千上万个这样的对象并且想要惰性实例化,可能会有所不同)。

于 2012-06-11T02:11:02.523 回答
1

可以做这样的事情:

private List<myClass> myCollection { get {
   if (_myCollection == null) _myCollection = new List<myCollection>();
   return _myCollection;
}}
private List<myClass> _myCollection;

然后后来:

myCollection.Add(someInstance);

它将调用 getter,它检查 null。

但根据Mitch Wheat 的回答,最好只创建一次列表

于 2012-06-11T02:16:25.777 回答