2010-11-18 10 views

答えて

4
private List<string> _names = new List<string>(); 

public List<string> Names 
{ 
    get {return _names;} 
    set {_names = value;} 
} 

あなたが直接

public List<string> Names { get; set; } 

を使用したい場合は、私は、コンストラクタを使用すること以外は考えています。

1

一つの方法:

List<string> myList = new List<string>(); 
+0

私はOPが、これはコンパイラによって自動的に行わたかったと思います。 –

+0

@ icyrock.com、ありがとう、私はそれを知っている、そして私が示しているようにコンパイラはこれをしません。 – Gabe

1
public class Foo { 
    List<int> list = new List<int>(); 

    // details elided 
} 

今すぐlistnullあなたのインスタンスメソッドのいずれかを実行していることはありません。

1

彼はコンストラクタなしで尋ねられているので、私は答えがノーだと思います - 私は彼がおそらくあなたが(不正確に)スタックで宣言されたC++クラスを知覚する方法を探しているとイメージしています - スタック上にポインタを持たない言語に対して構文的に見ても、コンストラクタが呼び出されていないという錯覚が与えられます。

私は依存性注入が初めてであるため、不確実ですが、おそらく何かがそのように行われ、効果的にすべてのコレクションを自動配線しますか?

編集:本当に - なぜですか?ヌルなどを宣言するいくつかの単体テストを書いてください。メンバー変数を作成するのを忘れると、「私にとって必要なものだけで、私が望むやり方で」トーテム

1

リスト構築を邪魔する微妙なバリエーション - WCFを含むいくつかのシナリオで役立ちますこれは、逆シリアル化のコールバックを必要とせずに)コンストラクタフィールド初期化子の両方をスキップ:

public class MyType 
{ 
    private List<string> items; 
    public List<string> Items { get { 
     return items ?? (items = new List<string>()); } } 
} 
関連する問題