0

これは私のコードです。テキスト ファイルから読み取り、フォームのリスト ボックスに配置します。テキストファイルにすでに何かがある場合は機能します。しかし、テキスト ファイルの内容を削除してプログラムを実行すると、プログラムがクラッシュし、「インデックスが配列の範囲外にありました」というエラーが表示されます。

assignment.Request.Name = columns[1];、それを修正する理由/方法がわかりません。

public static List<Assignment> GetAssignment()
    {
        if (!Directory.Exists(dir))
            Directory.CreateDirectory(dir);


        StreamReader textIn =
            new StreamReader(
                new FileStream(path3, FileMode.OpenOrCreate, FileAccess.Read));

        List<Assignment> assignments = new List<Assignment>();

        while (textIn.Peek() != -1)
        {
            string row = textIn.ReadLine();
            string[] columns = row.Split('|');
            Assignment assignment = new Assignment();

            assignment.Employee.Name = columns[0];
            assignment.Request.Name = columns[1];
            assignments.Add(assignment);
        }

        textIn.Close();

        return assignments;
    }
4

2 に答える 2

1

列配列に少なくとも 2 つの項目があることを確認する必要があります。そうしないと、存在しない配列項目にアクセスしようとします。

 while (textIn.Peek() != -1)
        {
            string row = textIn.ReadLine();
            string[] columns = row.Split('|');
            if(columns.length>=2)
            {
            Assignment assignment = new Assignment();

            assignment.Employee.Name = columns[0];
            assignment.Request.Name = columns[1];
            assignments.Add(assignment);
           }
        }
于 2015-11-20T03:52:10.070 に答える
1

ファイルを読み取った後、条件を Put します。

if(columns.length >2)
{

 assignment.Employee.Name = columns[0];
            assignment.Request.Name = columns[1];
            assignments.Add(assignment);

}
于 2015-11-20T03:53:09.997 に答える