此问题已经在这里有了答案:
[当使用嵌套字典时,由于“字典不包含'CONST_NAME'的定义”],我被警告该代码将无法编译。该字典是在同一类的静态构造函数上声明的,所以这不是问题。
简而言之,代码如下:
const int OBJECT_ID1 = 0; const int OBJECT_ID2 = 1; const int OBJECT_ID3 = 2; (...) static MyCLass() { MyDictionary = new Dictionary<int, Dictionary<int, float>> { OBJECT_ID1 = new Dictionary<int, float> { OBJECT_ID2 = 5.0f, OBJECT_ID3 = 15.0f } }; } public static readonly Dictionary<int, Dictionary<int, float>> MyDictionary;
所有三个常量都有此错误,所以不是因为嵌套字典(我认为)。
我很清楚,我可以改用下面的代码(并且可以工作),但是,我想避免声明一个Dictionary变量,因为以后它不会用于其他任何事情(而且我相信原始的代码更干净):
MyDictionary = new Dictionary<int, Dictionary<int, float>>(); Dictionary<int, float> dict = new Dictionary<int, float>(); dict.Add(OBJECT_ID2, 5.0f); dict.Add(OBJECT_ID3, 15.0f); MyDictionary.Add(OBJECT_ID1, dict);
所以,我的问题是:为什么“字典不包含'CONST_NAME'的定义”错误不断发生,而在第二段代码中却能正常工作?有没有办法让它们按我的预期工作?
[我也想指出,我要避免直接用它们的值替换这些常量,因为它们将来很容易被修改。
当然,如果那是一个不可逾越的限制,我将不得不诉诸第二段代码,尽管我发现它更加脏and而且有些难以理解。
谢谢。
[当处理嵌套字典时,由于“字典不包含'CONST_NAME'的定义”,我被警告该代码将无法编译。该字典是在静态构造函数上声明的...
这里是正确的语法,可以像您正在尝试的那样创建字典: