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