如何在静态类中声明静态字典对象?我试过了
public static class ErrorCode
{
public const IDictionary<string, string> ErrorCodeDic = new Dictionary<string, string>()
{
{ "1", "User name or password problem" }
};
}
但是编译器抱怨“引用类型而不是string的常量字段只能用null初始化”。
发布于 2008-11-24 03:30:42
如果你想声明一次字典并且永远不改变它,那么将它声明为readonly:
private static readonly Dictionary<string, string> ErrorCodes
= new Dictionary<string, string>
{
{ "1", "Error One" },
{ "2", "Error Two" }
};
如果您希望字典中的项是只读的(不仅是引用,还包括集合中的项),则必须创建一个实现IDictionary的只读字典类。
请查看ReadOnlyCollection以供参考。
顺便说一句,常量只能在内联声明标量值时使用。
发布于 2008-11-24 03:23:43
正确的语法(在VS 2008 SP1中经过测试)如下:
public static class ErrorCode
{
public static IDictionary<string, string> ErrorCodeDic;
static ErrorCode()
{
ErrorCodeDic = new Dictionary<string, string>()
{ {"1", "User name or password problem"} };
}
}
发布于 2008-11-24 03:38:43
最初示例的问题主要是由于使用了const
而不是static
;您不能在C#中创建非空常量引用。
public static class ErrorCode
{
public static IDictionary<string, string> ErrorCodeDic
= new Dictionary<string, string>()
{ {"1", "User name or password problem"} };
}
此外,正如Y Low指出的那样,添加readonly
也是一个好主意,并且这里讨论的修饰符都不会阻止字典本身被修改。
https://stackoverflow.com/questions/313324
复制相似问题