0

問題は、リスト内のすべてのエントリが、追加されたばかりのエントリのコピーになることです。

したがって、基本的に、リストに 10 個のオブジェクト (テキスト ファイルに 10 行) がある場合、リスト内の 10 個のオブジェクトすべてが 10 番目のオブジェクトのコピーになります。これは、ループ中のどの時点でも当てはまります。6 回目の繰り返しで停止すると、前の 5 つのエントリはすべて、追加している 6 行目のコピーになります。これが私のループです。

StreamReader lolz = new StreamReader("test.txt");

while (!lolz.EndOfStream)
{
    string line = lolz.ReadLine();
    string[] lines = line.Split('|');
    {
        tasksList.Add(new TaskList(lines[0], lines[1], lines[2], lines[3], lines[4], lines[5], lines[6]));
    }
}

私には意味がありません。

4

1 に答える 1

0

代わりに中括弧を削除してみてください

string[] lines = line.Split('|');
{
    tasksList.Add(new TaskList(lines[0], lines[1], lines[2], lines[3], lines[4], lines[5], lines[6]));
}

ただ

string line = lolz.ReadLine();
string[] lines = line.Split('|');
tasksList.Add(new TaskList(lines[0], lines[1], lines[2], lines[3], lines[4], lines[5], lines[6]));

参照によって最後のオブジェクトを取得しているようです。静的クラスまたは静的メンバーを使用していないかどうかを確認する必要があります。質問に適切に答えるには、コード全体を投稿する必要があります...

次のように使用する必要があります。

using(StreamReader lolz = new StreamReader("test.txt"))
{
    string line;
    string[] lines;
    while ((line = lolz .ReadLine()) != null)
    {
        lines = line.Split('|');
        tasksList.Add(new TaskList(lines[0], lines[1], lines[2], lines[3], lines[4], lines[5], lines[6]));
    }
}
于 2013-05-31T22:56:38.447 に答える