インターフェイス クローン実装
//クローンはSystem.Clonable?を使っています。
public class test : ICloneable
{
public int value;
public test() {}
public test(test ts)
{
value = ts.value;
}
public object Clone()
{
Console.WriteLine(value);
return new test(this);
}
}
static void Main(string args[])
{
test ts = new test();
ts.value = 100;
test t2 = (test)ts.Clone(); // v.Clone() as testでも可。
//コピーされているか確認
Console.WriteLine(t2.value);
//参照になっていないか確認 (値を変えて元のts.Valueも変わっていたら参照になっているので失敗)
t2.value = 200;
Console.WriteLine(t2.value);
Console.WriteLine(ts.value);
}
インターフェイスの実験というよりクラスによる参照渡しでのコピーをやりたくないときがあったのでクローンを使って値渡しに変えてみるときに使うと思います。
参考URL
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1456874764
※注意点
public test(test ts)
{
value = ts.value;
}
受け取ったts.valueを(this.)valueにコピーするのであって逆にしたら正しくコピーされませんので注意してください。