这真的不是在 C# 中初始化列表的合法方法吗?

roc*_*cky -1 c# list

我正在尝试初始化一个字符串列表以在以后的方法中使用。我不知道列表需要多大的大小,因为将传递给程序的数据集的大小不一致。因此,我动态地将项目添加到列表中。但是,当我在上面的空间中初始化列表时,会被认为main()是这样,

List<string> studentData;
Run Code Online (Sandbox Code Playgroud)

并在这样的公共方法中调用它,

studentData.AddRange(student); // Student is an array
Run Code Online (Sandbox Code Playgroud)

我得到一个例外,说,

System.NullReferenceException:“未将对象引用设置为对象的实例” studentData 为空。

但早些时候在我的代码中,我调用了一个像这样初始化的不同列表,它工作得很好,

List<string> fileInput; // Holds comma delimited file text
.
. 
.
fileInput = text.Split(',').ToList();`
Run Code Online (Sandbox Code Playgroud)

然后我去DotNetPerls弄清楚如何初始化一个非空列表。根据代码示例,这应该有效,

List<string> studentData = new List<string>();
studentData.Add("Thing");
Run Code Online (Sandbox Code Playgroud)

studentData得到了带有警告文本的绿色下划线

studentData 永远不会分配给,并且将始终具有其默认值 null。

studentData.Add("Thing");用红色下划线错误文本

当前上下文中不存在名称“studentData.Add”。当前上下文中不存在名称“studentData”。

并且("Thing")也是分开处理的。

键入预期。
元组必须至少包含两个元素。) 预期的。类、结构或接口成员声明中的无效标记“Thing”

在此处输入图片说明

我对 C# 还是很陌生,这些错误对我来说都没有意义。我在这里做错了什么?

小智 5

List<string> studentData;
Run Code Online (Sandbox Code Playgroud)

只需声明一个变量studentData,其类型为List<string>,值为null

List<string> studentData = new List<string>();
Run Code Online (Sandbox Code Playgroud)

这将创建一个空列表并分配给studentData.