y.e [0] .kは20の代わりに30のですか? は何明らかに起こっていることはがた[0] = XE [0]リスト<T> instanciation onコピー
しかし、私は必要なのyはインスタンス化されたXからYへコピーリストにあるだけではなく、あなたがたにポインタXEをコピーすることです;
しかし:X.CはとY.Cは私が期待するよう偽である事実です。
どれでも有益なコメントは
真class Eclass {
public int k { get; set; }
public Eclass(int iK) { k = iK; }
}
class Sclass {
private static int ID = -1;
public long Id { get; set; }
public bool c { get; set; }
public List<Eclass> e { get; set; }
public Sclass() {
c = false;
Id = ++ID;
e = new List<Eclass>();
}
public Sclass(Sclass org) {
c = org.c;
Id = ++ID;
//foreach (var OrgE in org.e) { e.Add(OrgE); } //also doesn't work
//e = org.e.ToList();
e = new List<Eclass>(org.e);
}
}
class Program {
static void Main(string[] args)
{
Console.WriteLine("steve");
Eclass e1 = new Eclass(1);
Eclass e2 = new Eclass(2);
Eclass e3 = new Eclass(3);
Eclass e4 = new Eclass(4);
Sclass x = new Sclass();
x.c = false;
x.c = true;
x.e.Add(e1);
x.e.Add(e2);
Sclass y = new Sclass(x);
x.e.Add(e3);
y.e.Add(e4);
x.e[0].k = 10;
y.e[0].k = 20;
x.c = false;
Debug.WriteLine("//{0}// //{1}// :: //{2}// //{3}//", x.c, x.e[0].k, y.c, y.e[0].k);
x.c = !x.c;
y.c = !y.c;
x.e[0].k = 30;
Debug.WriteLine("//{0}// //{1}// :: //{2}// //{3}//", x.c, x.e[0].k, y.c, y.e[0].k);
}
}
偽// // // 20 // :: //真// // 20 //
// // //を高く評価30 // :: //偽// // 30 //
Cの古い時と同じように、構造体のコピーを作成したいのですか?ファイン。しかし、構造体の値やポイントだけを構造体のインスタンスにコピーしたいのかどうか知っていますか?私はこれについて深く潜り込んだことをうれしく思っています。私は間違って値をコピーするコピーをしようとしていた。 – Steve