方法 : コピー コンストラクターを記述する (C# プログラミング ガイド)

一部の言語とは異なり、C# ではコピー コンストラクターが用意されていません。新しいオブジェクトを作成し、既存のオブジェクトから値をコピーする場合は、自分で適切なメソッドを記述する必要があります。

使用例

この例では、Personクラスは、Person 型の別のオブジェクトを引数として受け取るコンストラクターを含みます。このオブジェクトのフィールドの内容は、新しいオブジェクトのフィールドに割り当てられます。代替コピー コンストラクターは、コピーするオブジェクトの name フィールドおよび age フィールドをクラスのインスタンス コンストラクターに送信します。

class Person
{
    private string name;
    private int age;

    // Copy constructor.
    public Person(Person previousPerson)
    {
        name = previousPerson.name;
        age = previousPerson.age;
    }

    //// Alternate copy contructor calls the instance constructor.
    //public Person(Person previousPerson)
    //    : this(previousPerson.name, previousPerson.age)
    //{
    //}

    // Instance constructor.
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    // Get accessor.
    public string Details
    {
        get
        {
            return name + " is " + age.ToString();
        }
    }
}

class TestPerson
{
    static void Main()
    {
        // Create a new person object.
        Person person1 = new Person("George", 40);

        // Create another new object, copying person1.
        Person person2 = new Person(person1);
        Console.WriteLine(person2.Details);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output: George is 40

参照

関連項目

クラスと構造体 (C# プログラミング ガイド)

コンストラクター (C# プログラミング ガイド)

デストラクター (C# プログラミング ガイド)

ICloneable

概念

C# プログラミング ガイド