2011-05-19 164 views
0

可能重複:
Using var outside of a method蘊類型的類成員

我已經搜查了這一點,但我也不太清楚搜索項所以沒有發現任何東西。

爲什麼我不能做到這一點:

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

猜必須有一個很好的理由,但我不能認爲它!

我對推理更感興趣,而不是因爲「C#不讓你」回答。

編輯:編輯Dictionary聲明,抱歉(只是在例子中的錯字)!

回答

2

2個原因:

  1. 辭典需要鑰匙和價值泛型參數
  2. 你不能直接寫一個類裏面像這樣的變量=>你可以使用的字段,屬性或方法

所以:

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

至於你爲什麼不能這樣做:

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

Eric Lippert在blog post中報道了它。

1

沒有指定一個該鍵的類型,它應該是:

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

編輯:而且它不允許在類字段的情況下使用「變種」。

+0

不,這不會編譯。 – 2011-05-19 09:00:07

+0

固定,這是因爲「var」,它只允許在成員變量的情況下。 – BitKFu 2011-05-19 09:01:12

0

字典需要兩個參數,一個鍵類型和一個值類型。

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);