【问题标题】:Implicity typed class member [duplicate]隐式类型的类成员[重复]
【发布时间】:2011-08-28 16:55:43
【问题描述】:

可能重复:
Using var outside of a method

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

为什么我不能这样做:

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

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

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

编辑:编辑 Dictionary 声明,抱歉(只是示例中的错字)!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      “字典”是指键/值对的集合。在现实世界中,世界词典是包含“单词”和“定义”的书,这里“单词”是键,“定义”是值。所以很明显,实例化Dictionary&lt;TKey, TValue&gt;时不能忽略“值”。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          2 个原因:

          1. 字典需要 Key 和 Value 通用参数
          2. 您不能直接在 1234562 中编写这样的变量 => 您可以使用字段、属性或方法

          所以:

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

          至于为什么你不能这样做:

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

          Eric Lippert 在blog post 中对此进行了报道。

          【讨论】:

            【解决方案5】:

            您没有指定键的类型,它应该是:

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

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

            【讨论】:

            • 已修复,是因为“var”,只有在成员变量的情况下才允许。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-05
            • 2019-02-03
            • 1970-01-01
            • 2021-08-26
            • 1970-01-01
            相关资源
            最近更新 更多