You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

结构体中List未初始化报错,如何正确初始化结构体中的List?

解决结构体中List未初始化的问题

嘿,这个问题其实很常见——你定义的结构体里的Folder是引用类型(List<string[]>),当你用new directories()创建结构体实例时,引用类型成员的默认值是null,直接调用Add自然会触发空引用相关的报错。下面给你几种靠谱的解决办法:

方法1:给结构体添加构造函数初始化List

你可以在结构体里写一个构造函数,在创建实例的时候就把Folder初始化好:

private struct directories 
{ 
    public List<string[]> Folder; 

    // 添加构造函数,确保Folder被初始化
    public directories(List<string[]> folder)
    {
        Folder = folder ?? new List<string[]>();
        // 如果不需要外部传入List,也可以直接写 Folder = new List<string[]>();
    }
}

// 使用构造函数创建实例
directories d1 = new directories(new List<string[]>());
d1.Folder.Add(Directory.GetDirectories(path1));

方法2:实例化结构体后手动初始化List

如果不想修改结构体定义,也可以在创建实例后,先给Folder赋值一个新的List对象,再调用Add方法:

private struct directories { public List<string[]> Folder; }

directories d1 = new directories();
// 先初始化Folder,避免null
d1.Folder = new List<string[]>();
d1.Folder.Add(Directory.GetDirectories(path1));

方法3:使用对象初始化器简化代码

用对象初始化器可以在创建结构体实例的同时完成Folder的初始化,写法更简洁:

private struct directories { public List<string[]> Folder; }

// 直接在实例化时初始化Folder
directories d1 = new directories { Folder = new List<string[]>() };
d1.Folder.Add(Directory.GetDirectories(path1));

另外提个小建议:C#里结构体名称通常采用帕斯卡命名法(比如Directories而不是directories),这是社区通用的编码规范,能让代码可读性更好哦~

内容的提问来源于stack exchange,提问作者M.J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:20:58