是否有一个C#成语创建然后添加到集合?

时间:2012-06-11 02:09:53

标签: c# idioms

说我有这个:

private list<myClass> myCollection;

是否有编程习惯用法将这个非常常见的语句组合缩短为单个语句? :

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

   myCollection.Add(someInstanceOfMyClass);

这个成语可以被描述为“必要时创建,然后添加到它”

TIA。

2 个答案:

答案 0 :(得分:4)

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

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

实例化单个列表不是消耗时间或内存的事情。 (如果你有成千上万的这些并想要懒惰的实例化,可能会有所不同)。

答案 1 :(得分: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's answer

创建列表可能更好