C#静态类属性访问触发NullReferenceException空引用异常问题求助
问题原因
你的静态类Options中定义的MiscSettings属于引用类型字段,C#中未显式初始化的引用类型静态字段,默认值为null。
你执行的代码仅对Options.Units做了显式赋值操作,从未给Options.MiscSettings赋值,因此访问Options.MiscSettings.OutputDebugging时会触发空引用异常。
而你将OutputDebugging属性移到Units类中后可以正常运行,是因为Options.Units已经被你赋值为有效的实例对象,不存在空引用的问题。
解决方案
你可以选择以下任意一种方式解决该问题:
- 静态类初始化时直接给
MiscSettings赋初始实例:
public static class Options { // 初始化时直接创建MiscSettings实例 public static MiscSettings MiscSettings = new MiscSettings(); public static Units Units; }
- 给
MiscSettings同步赋值OptionsData中的对应配置,和Units的处理逻辑保持一致:
Options.Units = OptionsData.Units; // 新增MiscSettings赋值逻辑 Options.MiscSettings = OptionsData.MiscSettings; Options.MiscSettings.OutputDebugging = false;
- 临时兼容空引用场景(不推荐,仅做应急处理),使用空条件运算符避免抛出异常:
Options.MiscSettings?.OutputDebugging = false;
内容的提问来源于stack exchange,提问作者Eric Snyder
相关产品推荐
相关产品推荐

