[英]I don't understand the NewNotImplementedException runtime error I'm getting
[英]Don't understand why I'm getting an IndexOutOfRangeException
我試圖將數據字段名稱從文本文件加載到我的程序中,並將它們存儲到一個變量中,一個數組。
字段名稱用於將其他文件中的數據排序並打印到有組織的新文檔中。
我在將文件中的字段存儲到數組中時遇到了很多麻煩。
數據字段文本文件以列表方式組織,每個字段都在自己的行上。
我創建了一個 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]);
}
}
這是因為當你定義一個數組時,你必須為每個元素騰出空間。 因此,當您像所做的那樣聲明數組時,您並沒有給它任何空間來接受新數據。 您可能希望以下列方式聲明您的數組(以便它有足夠的空間容納所有數據):
protected static string[] dataFields = new string[151];
您正在閱讀多達 151 個元素(因為您的<= 150
條件),因此您需要提供適當的空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.