次の方法で共有


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

C# では、オブジェクトのコピー コンストラクターが提供されていませんが、独自に作成することができます。

使用例

次の例で、Person クラスは、Person のインスタンスを引数として受け取るコピー コンストラクターを定義しています。 引数のプロパティの値は、Personの新しいインスタンスのプロパティに割り当てられています。 このコードには、コピーするインスタンスの Name プロパティと Age プロパティをクラスのインスタンス コンストラクターに渡す代替のコピー コンストラクターが含まれています。

class Person
{
    // Copy constructor. 
    public Person(Person previousPerson)
    {
        Name = previousPerson.Name;
        Age = previousPerson.Age;
    }

    //// Alternate copy constructor calls the instance constructor. 
    //public Person(Person previousPerson) 
    //    : this(previousPerson.Name, previousPerson.Age) 
    //{ 
    //} 

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

    public int Age { get; set; }

    public string Name { get; set; }

    public string Details()
    {
        return Name + " is " + Age.ToString();
    }
}

class TestPerson
{
    static void Main()
    {
        // Create a Person object by using the instance constructor.
        Person person1 = new Person("George", 40);

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

        // Change each person's age. 
        person1.Age = 39;
        person2.Age = 41;

        // Change person2's name.
        person2.Name = "Charles";

        // Show details to verify that the name and age fields are distinct.
        Console.WriteLine(person1.Details());
        Console.WriteLine(person2.Details());

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

参照

関連項目

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

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

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

ICloneable

概念

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