2011-05-19 85 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);