在尝试运行此代码时,我设法崩溃团结,而不仅仅是我的游戏,而是整个编辑器。
public object get(string path, object default_value) {
string[] parts = path.Split ('.');
Dictionary<string, object> dict = json_parsed;
int i = 0;
for (; i < parts.Length - 1; i++) {
dict = dict[parts[i]] as Dictionary<string, object>;
}
try {
return dict[parts[i]];
} catch (KeyNotFoundException) {
return default_value;
}
}
public int get(string path, int default_value) {
return Convert.ToInt32(get(path, default_value));
}
在get(path, default_value)
的第二个版本中运行get()
代码时发生崩溃,但如果我将第二个版本命名为getInt()
,我可以解决此问题。
我是C#的新手,因为我甚至使用了一种超载的语言已经好几年了,所以我在这里错误的做法就是躲避我。
答案 0 :(得分:4)
public int get(string path, int default_value) {
return Convert.ToInt32(get(path, default_value));
}
这个get
无限调用自身会导致堆栈溢出。
将通话更改为:
public int get(string path, int default_value) {
return Convert.ToInt32(get(path, (object)default_value));
}