0

我正在尝试创建一个二维数组,它以字符串形式保存注册表的根键及其子键,所以我希望数组是

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;
    }
4

1 回答 1

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];
    }
}
于 2013-06-28T19:24:04.100 回答