在if语句中创建List并在else中添加它

时间:2017-04-30 08:51:05

标签: c#

Stack + C#有点新鲜,抱歉,如果这个问题有不熟悉的措辞。

我正在尝试创建一个程序,该程序将以行分隔的纯文本输入。 如果该行是特定关键字(在本例中为“group”),它将创建一个新的List。在else语句中,它会将文本分配给列表,直到读者到达另一个“组”。

如何通过我的else语句添加分组[0]和分组[1] ...等? 我得到的当前错误是“对象引用未设置为对象的实例”。我假设我对“n”变量做错了,但我不确定是什么。

while ((line = Console.ReadLine()) != null) {

List<String>[] grouping = new List<String>[20];

int count = 0;
int n = 0;

if (line == "group"){
    n++;
    grouping[n] = new List<String>();
}

else {
    grouping[n].Add(line);
}} 

TLDR:我做错了什么?

1 个答案:

答案 0 :(得分:1)

您应该将索引器n和数组声明移出循环,以便在每次迭代后保留值。基于c#的索引也是0。所以从索引0而不是1为数组赋值。

int n = -1;       
List<string>[] grouping = new List<string>[20];

while ((line = Console.ReadLine()) != null) 
{
    if (line == "group"){
        n++;
        grouping[n] = new List<string>();        
    }
    else 
    {
        grouping[n].Add(line);
    }
}