0

重複の可能性:
メソッド外で var を使用する

ちょっと調べてみましたが、検索用語がよくわからないので、見つかりませんでした。

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

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

相当な理由があるに違いないと思いますが、思いつきません!

「C#ではできない」という理由よりも、その理由に興味があります。

EDIT:編集Dictionaryされた宣言、申し訳ありません(例の単なるタイプミス)!

4

5 に答える 5

2

2 つの理由:

  1. ディクショナリには Key および Value ジェネリック パラメータが必要です
  2. このような変数をクラス内に直接記述することはできません => フィールド、プロパティ、またはメソッドを使用できます

そう:

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

これができない理由について:

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

Eric Lippert がブログ記事で取り上げています。

于 2011-05-19T08:58:31.010 に答える
1

キーのタイプを指定していません。次のようにする必要があります。

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

編集:クラスフィールドの場合、「var」を使用することは許可されていません。

于 2011-05-19T08:58:17.067 に答える
0

ディクショナリには、キー タイプと値タイプの 2 つのパラメータが必要です。

var bar = new Dictionary<string, string>();
于 2011-05-19T08:59:07.470 に答える
0

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

于 2011-05-19T09:01:57.960 に答える
0

ディクショナリは、一連のキーを一連の値にマッピングするためのクラスであるため、キーと値の両方に型パラメーターを指定する必要があります。たとえば、銘柄記号に基づいて株価を検索する場合は、次のように使用できます。

var stocks = new Dictionary<string, decimal>();
stocks.Add("MSFT", 25.5M);
stocks.Add("AAPL", 339.87M);
于 2011-05-19T09:02:18.910 に答える