-3
class Class2
{
    public string ven;
    public List<string> lname = new List<string>();
}
List<Class2> l = new List<Class2>();
List<string> lhs = new List<string>();

Class2 c2 = new Class2();
c2.ven = line_split[0];
c2.lname = lhs;

l.Add(c2);
lhs.Clear();

lhs.Clear()実行されると、オブジェクトが空になりますl

私の選択肢は何ですか?

4

2 に答える 2

2

オブジェクトに保存されているリストをクリアしてクリアしたくない場合はlhs、オブジェクトのフィールドにリストを割り当てるときにリストをコピーする必要があります。

c2.lname = new List<string>(lhs);

理想的には、Class2コンストラクターでこれを実行します。

于 2012-10-03T20:43:15.393 に答える
1

lhsとlname変数は同じList<string>オブジェクトを指します。したがって、lhsをクリアすると、lnameもクリアされるのは当然です(同じオブジェクトを指します!)

この動作を望まない場合は、クラスフィールドにコピーしてください。c2.lname = new List<string>(lhs)

于 2012-10-03T20:47:27.510 に答える