我有一个具有静态属性的类。我希望这个类有一个静态的只读字典 - 我想匿名初始化它。我尝试了以下但是它不起作用:
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和字符串都有效。
答案 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" },