0

可能重复:
在方法之外使用 var

我已经对此进行了一些搜索,但对搜索词不太确定,所以没有找到任何东西。

为什么我不能这样做:

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

猜想一定有一个很好的理由,但我想不出来!

我对推理更感兴趣,而不是因为“C# 不允许你”的答案。

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

4

5 回答 5

2

2个原因:

  1. Dictionary 需要 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

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

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

“字典”是指键/值对的集合。在现实世界中,世界词典是包含“单词”和“定义”的书,这里“单词”是键,“定义”是值。所以很明显,在实例化 a 时不能忽略“值” 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 回答