ハッシュテーブルの浅いコピーと深いコピーに関するいくつかの記事/説明に出くわしました。読むほど、混乱します。
Hashtable ht = new Hashtable();
ht.Add("1", "hello");
Hashtable ht2 = new Hashtable();
ht2 = ht; // case1: is this shallow copy?
ht2["1"] = "H2";
Hashtable ht3 = new Hashtable(ht); // case2: is this shallow copy?
ht3["1"] = "H3";
Hashtable ht4 = new Hashtable();
ht4 = (Hashtable)ht.Clone(); // case3: is this shallow copy?
ht4["1"] = "H4";
- ケース1:結果、htコンテンツの変更はht2と同じになります。
- ケース2:結果、htコンテンツはht3とは異なります。
- ケース3:結果、htコンテンツはht4とは異なります。
Case2とCase3が浅いコピーの場合、結果はCase1と同じではないでしょうか。
これはList、ArrayListなどにも起こりますか?