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

C#中为Null枚举数组赋值时遇System.NullReferenceException的解决方法

解决枚举数组空引用异常并动态添加元素的方法

首先,你遇到的NullReferenceException原因非常明确:你只声明了Name[] names;,但没有实际创建数组实例,此时names的值是null,尝试访问names[0]当然会触发空引用异常。而且数组的大小是固定的,既然用户输入数量不确定,用数组本身就不是适配这种场景的最佳选择。

最优方案:使用泛型列表List<Name>

List<T>是C#专门为动态元素集合设计的类型,它支持自动扩容,完美匹配输入数量不固定的需求:

  1. 把原数组声明替换为列表并初始化:
private static List<Name> names = new List<Name>();
  1. 在方法中添加用户输入的枚举值:
public static string GetName(Name input) 
{
    names.Add(input); // 直接调用Add方法动态添加元素,无需提前指定大小
    // 这里可以补充你的业务逻辑,比如返回枚举对应的字符串
    return input.ToString();
}
  1. 如果后续需要将列表转为数组(比如某些API要求数组类型),只需一行代码:
Name[] namesArray = names.ToArray();

若必须使用数组(不推荐)

如果因为特殊限制一定要用数组,你需要先确定要存储的元素数量,再初始化数组。比如可以先收集所有用户输入,再创建对应大小的数组:

// 假设已收集到所有用户输入的List<Name> inputList
private static Name[] names = inputList.ToArray();

但这种方式灵活性很差,每次添加新元素都需要重新创建数组,效率低下,因此优先推荐使用List<Name>。

内容的提问来源于stack exchange,提问作者Arunkumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:15:42