我正在尝试从文本文件中将数据字段名称加载到我的程序中,并将它们存储到变量数组中。
字段名称用于将其他文件中的数据排序并打印到有组织的新文档中。
我在将文件中的字段存储到数组中时遇到了很多麻烦。
数据字段文本文件以列表方式组织,每个字段都在其自己的行上。
我创建了一个while循环,直到StreamReader的Peek()等于-1。
我在while循环中嵌套了一个for循环,它将索引整数变量递增1,直到它小于或等于文本文件中的总行数。
它还使用ReadLine()将一行文本文档存储到特定索引处的数组中。我认为在for循环中使用它会循环遍历每一行并存储它需要存储的内容。
我需要使用字典中的字段,这样当我开始显示该信息时,我可以将字段用作键,将其他文档中的数据用作字典的值。
我认为我这样做的方式会有必要的措施来避免IndexOutOfRangeException,但我想情况并非如此。
我很感激有意愿帮助我的人。如果有任何不清楚的地方,我会道歉,如果需要,我会尽量澄清事情。
如果我尝试的逻辑解释很糟糕,那就是代码:
class Program
{
protected static string[] dataFields = new string[] { };
static void Main(string[] args)
{
int iIndex;
using (StreamReader titleStream = new StreamReader(@"..\..\DataFieldsLayout.txt"))
{
while (titleStream.Peek() > -1)
{
for (iIndex = 0; iIndex <= 150; iIndex++)
{
// where the exception occurs
dataFields[iIndex] = titleStream.ReadLine();
}
}
}
// test
Console.WriteLine(dataFields[0]);
Console.WriteLine(dataFields[1]);
Console.WriteLine(dataFields[2]);
Console.WriteLine(dataFields[3]);
Console.WriteLine(dataFields[4]);
}
}
答案 0 :(得分:0)
这是因为当你定义一个数组时,你必须为每个元素腾出空间。因此,当您按照自己的方式声明数组时,您没有给它任何空间来接受新数据。您可能希望以下列方式声明您的数组(以便它有足够的空间容纳所有数据):
protected static string[] dataFields = new string[151];
您正在阅读最多151个元素(因为您的<= 150
条件),因此您希望提供适当的空间。