【问题标题】:Error with static readonly Dictionary静态只读字典出错
【发布时间】:2012-09-16 00:16:23
【问题描述】:

我在编译这些代码行时出错:

using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace test
{
    public class testing
    { 
        public static readonly string IN_TABLE_KEY = "IN";
        public static readonly string OUT_TABLE_KEY = "OUT";
        public static readonly string TODAY_TABLE_KEY = "TODAY";
        public static readonly Dictionary<string, string> TEST =
            new Dictionary<string, string>()
            {
                { IN_TABLE_KEY, "TEST1"},
                { OUT_TABLE_KEY, "TEST2"},
                { TODAY_TABLE_KEY, "TEST3"}
            };
    }
}

我真的不明白,这段代码就是无法编译,我不知道这个错误是关于语法还是代码中的其他地方。

这里是我得到的语法错误:

;预期的 类、结构或接口成员声明中的标记“{”无效 命名空间不直接包含字段或方法等成员 类型或命名空间定义,或预期的文件结尾

谢谢。

【问题讨论】:

  • 你不能有公共的局部变量。那就是在方法代码中声明公共局部变量...
  • 听起来你在上面的某个地方有支撑问题。这段代码对我来说很好。
  • 在将集合初始化器添加到语言中之前,您使用的是旧版本的 C# 编译器。
  • 我刚试过,它编译得很好。你用的是哪个固件?
  • 到目前为止我们缺少的一条重要信息:您使用的是什么框架版本? .NET 2? .NET 1.1? .NET 3.5?

标签: c# dictionary static readonly public


【解决方案1】:

查看错误,您似乎忘记将其放在类中,或者忘记了命名空间声明。

.NET 中不能有全局字典

【讨论】:

    【解决方案2】:

    尝试在类中声明它,而不是在任何方法中,如下图所示。

    【讨论】:

    • 嗯。真的不需要图片。 =)
    【解决方案3】:

    似乎您将声明放在类声明之外。

    试试这个:

    namespace MyNamespace
    {
       public class MyClass
       {
          public static readonly string IN_TABLE_KEY = "IN";
          public static readonly string OUT_TABLE_KEY = "OUT";
          public static readonly string TODAY_TABLE_KEY = "TODAY";
          public static readonly Dictionary<string, string> TEST = 
              new Dictionary<string, string>()
                 {
                    { IN_TABLE_KEY, "TEST1" },
                    { OUT_TABLE_KEY, "TEST2" },
                    { TODAY_TABLE_KEY, "TEST3" }
                 };
       }
    } 
    

    【讨论】:

    • 在问题中。更有可能是框架混淆 - OP 使用不支持数组初始化的框架版本的 .NET。
    • 嗯,可能是……我猜是 .NET 1.1。但这真的会触发该错误消息吗?
    • 不确定。我没有这么旧的工作室。 =)
    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 2015-09-23
    • 1970-01-01
    相关资源
    最近更新 更多