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の回答に従って、リストを1回だけ作成する方がおそらく良いでしょう。

于 2012-06-11T02:16:25.777 に答える