static readonly Dictionary<>匿名宣布

时间:2012-09-21 14:34:11

标签: c# collections properties dictionary

我有一个具有静态属性的类。我希望这个类有一个静态的只读字典 - 我想匿名初始化它。我尝试了以下但是它不起作用:

    public static readonly Guid ID1 = new Guid("53ba029b-0850-4f51-a358-648411e30972");
    public static readonly Guid ID2 = new Guid("400a9861-21c3-45fd-bf75-95be8f535c58");

public static readonly Dictionary<Guid, String> IdsAndStrings = new Dictionary<Guid, string>(){
    {ID1, "string"},
    {ID2, "string 2"}
};

我在尝试初始化时遇到异常。内部异常甚至提到错误转换为datetime!?不知道那里发生了什么。是否无法实例新词典&lt;&gt;像这样?我应该使用Get Set吗?

编辑:请假设所有guid和字符串都有效。

2 个答案:

答案 0 :(得分:2)

不,这不是不可能的。使用集合初始值设定项,它看起来像这样:

Dictionary<Guid, string> idsAndStrings = new Dictionary<Guid, string>
{
    { Guid.NewGuid(), "" },
    { Guid.NewGuid(), "" },
};

获取/设置会将项目公开为可写属性,这在语义上与只读字段不同 - 在某些情况下它会提供不同的行为。

答案 1 :(得分:1)

您现有的语法看起来是正确的,因此唯一可能出错的部分是Guid或字符串常量。

如果您尝试将Guids作为字符串传递,请明确使用相应的Guid constructor

{ new Guid("XXX-XXX"), "string" },
{ new Guid("YYY-YYY"), "string" },