كيفية القيام بما يلي: كتابة الدالة الإنشائية الناسخة (دليل البرمجة لـ #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