在Unity3D中,我试图遍历对象上的所有组件并获取它们的变量和值。这是不断抛出异常的代码:
componentvariables = new ComponentVars[component.GetType().GetFields().Length];
int x = 0;
//Get all variables in component
foreach(FieldInfo f in component.GetType().GetFields()){
componentvariables[x]=new ComponentVars();
componentvariables[x].Vars.Add(f.Name,f.GetValue(component).ToString());
x++;
}
ComponentVars类是
public class ComponentVars{
public Dictionary<string, string> Vars{get;set;}
}
是的我知道这很简单,我可以使用一系列字典,但我打算稍后再添加更多字典。
不断抛出错误的部分是
componentvariables[x].Vars.Add(f.Name,f.GetValue(component).ToString());
我经常看到这些变量未初始化但我尝试初始化它(如上面的代码所示),我仍然继续得到NullRefEx。
谁能看到我在这里做错了什么?
答案 0 :(得分:2)
在尝试向其添加值之前,请确保初始化Vars
字典:
foreach(FieldInfo f in component.GetType().GetFields()){
componentvariables[x] = new ComponentVars();
componentvariables[x].Vars = new Dictionary<string, string>();
componentvariables[x].Vars.Add(f.Name, f.GetValue(component).ToString());
x++;
}
甚至更好,在课堂上初始化它:
public class ComponentVars{
public Dictionary<string, string> Vars { get; private set; }
public ComponentVars()
{
this.Vars = new Dictionary<string, string>();
}
}