我正在尝试创建一个二维数组,它以字符串形式保存注册表的根键和它的子键,所以我希望数组为
string[rootkeys][subkeys]
但出于某种原因,在分配方面我得到了NullReferenceException
:
对象引用未设置为对象的实例。
这是我的代码。关于我做错了什么想法?
public string[][] getAllRootSubKeys(){
int i = 0;
int h = 0;
var allRoots = new List<RegistryKey> {Registry.ClassesRoot, Registry.CurrentUser, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig};
string[][] rootAndKey = null;
foreach (var root in allRoots) {
rootAndKey[i][h] = root.GetSubKeyNames()[h];
h++;
if (h == root.SubKeyCount) {
i++;
h = 0;
}
}
return rootAndKey;
}
答案 0 :(得分:3)
在尝试为其分配元素之前,您永远不会初始化rootAndKey
。你的循环逻辑看起来对我来说也很有趣。我猜你需要像:
string[][] rootAndKey = new string[allRoots.Count][];
for(var i = 0; i < allRoots.Count; i++)
{
var subkeys = root.GetSubKeyNames();
rootAndKey[i] = new string[subkeys.Length];
for(var h = 0; h < subkeys.Length; h++)
{
rootAndKey[i][h] = subkeys[h];
}
}