2

私はOOPが初めてなので、これを考慮してください。このマッチから取得したデータをクラスのオブジェクトに入れていますが、それは foreach ループで行われるため、呼び出されるたびにオブジェクト内のデータが上書きされ、最後にすべてのデータを自分の物体。しかし、私は最後の試合からしか持っていません。この上書きを避けるにはどうすればよいですか?たぶん私はそれを完全に間違った方法でやっていますか?

foreach (var match in matches)
            {
                dataTable.Rows.Add(new Group[] { match.Groups["C0"], match.Groups["C1"], match.Groups["C2"], match.Groups["C3"], match.Groups["C4"] });

                MyClass sk = new MyClass();

                sk.Category = match.Groups["C0"].ToString();
                sk.Device = match.Groups["C1"].ToString();
                sk.Data_Type = match.Groups["C2"].ToString();
                sk.Value = match.Groups["C3"].ToString();
                sk.Status = match.Groups["C4"].ToString();
            }
4

4 に答える 4

6

リストを作成します。

var list = new List<MyClass>();
foreach (var match in matches)
{
    dataTable.Rows.Add(new Group[] { match.Groups["C0"], match.Groups["C1"],
        match.Groups["C2"], match.Groups["C3"], match.Groups["C4"] });

    var sk = new MyClass {
        Category = match.Groups["C0"].ToString(),
        Device = match.Groups["C1"].ToString(),
        Data_Type = match.Groups["C2"].ToString(),
        Value = match.Groups["C3"].ToString(),
        Status = match.Groups["C4"].ToString()
    };
    list.Add(sk);
}

次に、リストにすべてのアイテムがあります。たとえば、LINQ を使用することもできます。

var items = from match in matches
            select new MyClass {
                Category = match.Groups["C0"].ToString(),
                Device = match.Groups["C1"].ToString(),
                Data_Type = match.Groups["C2"].ToString(),
                Value = match.Groups["C3"].ToString(),
                Status = match.Groups["C4"].ToString()
            };

を繰り返しitemsます。

于 2013-07-30T08:20:09.403 に答える