2011-05-19 13 views
0

可能性の重複:
Using var outside of a method暗黙的に型指定されたクラスのメンバ

私はこのビットを探しますが、そう何も見つかりませんでした検索用語をあまりわかりませんしました。非常に良い理由でなければなりませんが推測

class foo 
{ 
    var bar = new Dictionary<string, string>(); 
} 

が、私はそれを考えることはできません。

は、なぜ私はこれを行うことはできません!

私は、「C#はあなたに答えることができない」ためではなく、推論にもっと興味があります。

編集:編集Dictionary宣言、申し訳ありません(この例では誤植です)!

class foo 
{ 
    Dictionary<string,string> bar = new Dictionary<string,string>(); 
} 

編集:あなたはキーのタイプを指定しなかった

答えて

2

2の理由:

  1. 辞書は、あなたが直接クラス内でこのような変数を書き込むことはできません
  2. キーと値の一般的なパラメータを必要=>あなたはフィールド、プロパティやメソッド

を使用することができますだから:

class foo 
{ 
    private Dictionary<string, string> bar = new Dictionary<string, string>(); 
} 

なぜこれを行うことはできません:

class foo 
{ 
    private var bar = new Dictionary<string, string>(); 
} 

blog postでEric Lippertがそれをカバーしています。

1

、それはする必要があります、クラスフィールドの場合には「VAR」を使用することを許可されていません。

+0

いいえ、これはコンパイルされません。 –

+0

固定されていますが、これはメンバー変数の場合にのみ許可される "var"のためです。 – BitKFu

0

辞書には、キータイプと値タイプの2つのパラメータが必要です。

var bar = new Dictionary<string, string>(); 
0

"辞書"は、キーと値のペアの集合を意味します。実世界では、世界の辞書は「単語」と「定義」を含む本であり、ここでは「単語」がキーであり、「定義」は値である。したがって、Dictionary<TKey, TValue>をインスタンス化するときに "値"を無視できないことは明らかです。

0

辞書は、キーのセットを値のセットにマッピングするクラスであるため、キーと値の両方に型パラメーターを指定する必要があります。たとえば、株価を株価に基づいて検索する場合は、次のようにします。

var stocks = new Dictionary<string, decimal>(); 
stocks.Add("MSFT", 25.5M); 
stocks.Add("AAPL", 339.87M); 
関連する問題