隐式类型的类成员

时间:2011-05-19 08:56:18

标签: c# c#-4.0 c#-3.0 implicit-typing

  

可能重复:
  Using var outside of a method

我已经搜索了一下,但我对搜索词不太确定,所以找不到任何东西。

为什么我不能这样做:

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

猜测必须有一个很好的理由,但我无法想到它!

我对推理更感兴趣,而不是因为“C#不让你”回答。

编辑:编辑Dictionary声明,对不起(在示例中只是一个错字)!

5 个答案:

答案 0 :(得分:2)

2个原因:

  1. 字典需要键和值通用参数
  2. 你不能直接在class =&gt;中写这样的变量你可以使用字段,属性或方法
  3. 所以:

    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 :(得分:1)

您没有为密钥指定类型,它应该是:

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

编辑:在类字段的情况下不允许使用“var”。

答案 2 :(得分:0)

字典需要两个参数,一个键类型和一个值类型。

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

答案 3 :(得分:0)

“词典”表示键/值对的集合。在现实世界中,世界词典是包含“单词”和“定义”的书,这里“单词”是关键,“定义”是值。因此,显而易见的是,在实例化Dictionary<TKey, TValue>时,您不能忽略“值”。

答案 4 :(得分:0)

字典是用于将一组键映射到一组值的类,因此您需要为键和值指定类型参数。例如,如果要根据股票代码查找股价,可以使用:

var stocks = new Dictionary<string, decimal>();
stocks.Add("MSFT", 25.5M);
stocks.Add("AAPL", 339.87M);
相关问题