尝试从列表中分配数组时,未将对象引用设置为对象的实例

本文关键字:设置 对象引用 对象 实例 列表 分配 数组 | 更新日期: 2023-09-27 18:20:24

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

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

尝试从列表中分配数组时,未将对象引用设置为对象的实例

在尝试将元素分配给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];
    }
}