C# 入門 & 実践 / C sharp
3-6. ICloneable インターフェイスで、クローン生成。
いきなり、クラスと、インターフェイスの話になってます・・・
ここは後で見てください。
インスタンスの状態のままコピーして、新しいオブジェクトを作りたいときに使う。
class SomeType : ICloneable
{
private int x = 100;
public void plusX()
{
x++;
}
public int getX()
{
return x;
}
// 必須。
public Object Clone()
{
return MemberwiseClone();
}
}
static void Main(string[] args)
{
SomeType st = new SomeType();
st.plusX();
SomeType st1 = new SomeType();
SomeType st2;
st2 = st;
// * ここがポイント
// このとき、st の現状のまま新しいインスタンスが生成される!
SomeType st3 = (SomeType)st.Clone();
Console.WriteLine("st : {0} / {1} / {2} / {3}",st.getX(),st1.getX(),st2.getX(),st3.getX());
st.plusX();
Console.WriteLine("st : {0} / {1} / {2} / {3}", st.getX(), st1.getX(), st2.getX(), st3.getX());
}
これを実行すると
st : 101 / 100 / 101 / 101
st : 102 / 100 / 102 / 101
となる。
まぁそれだけです。
3-5. enum 列挙体 の落とし穴 «
3. C# 入門 / 基礎、型、文法、基本? »
3-7. static 静的
C# 入門 & 実践 / C sharp