الخصائص تلقائية التنفيذ (دليل البرمجة لـ #C)

في الإصدار 3.0 من #C والإصدارات الأحدث، الخصائص تلقائية التنفيذ تجعل تعريف الخاصية أكثر إيجازاً إن لم تكن هناك حاجة لمنطق إضافي في accessors الخاصية. وهي أيضاً تجعل التعليمات البرمجية للعميل قادرة على إنشاء الكائنات. عندما تقوم بتعريف خاصية كما هو موضح في المثال التالي يقوم المحول البرمجي بإنشاء حقل مجهول خاص يمكن الوصول إليه عبر accessors الخاصية فقط get و set.

مثال

يظهر المثال التالي فئة بسيطة بها بعض الخصائص تلقائية التنفيذ:


// This class is mutable. Its data can be modified from
// outside the class.
class Customer
{
    // Auto-Impl Properties for trivial get and set
    public double TotalPurchases { get; set; }
    public string Name { get; set; }
    public int CustomerID { get; set; }

    // Constructor
    public Customer(double purchases, string name, int ID)
    {
        TotalPurchases = purchases;
        Name = name;
        CustomerID = ID;
    }
    // Methods
    public string GetContactInfo() {return "ContactInfo";}
    public string GetTransactionHistory() {return "History";}

    // .. Additional methods, events, etc.
}

class Program
{
    static void Main()
    {
        // Intialize a new object.
        Customer cust1 = new Customer ( 4987.63, "Northwind",90108 );

        //Modify a property
        cust1.TotalPurchases += 499.99;
    }
}

الفئة التي في المثال السابق قابلة للتغيير. التعليمات البرمجية للعميل يمكن أن تغير قيم الكائن بعد إنشائه. في الفئات المعقدة التي تحتوي على سلوك هام (أساليب) بالإضافة إلى بيانات هامة فإنه من الضروري غالباً ما يكون هنالك خصائص عامة. ومع ذلك، في الفئات والبنيات الصغيرة التي تقوم بتغليف مجموعة من القيم (بيانات) ولديها سلوكيات قليلة أو بدون سلوكيات من المستحسن جعل الكائنات غير قابلة للتغيير بواسطة تصريح accessors التعيين كـ private. لمزيد من المعلومات، راجع كيفية القيام بما يلي: تنفيذ الفئة الصغيرة مع خصائص التنفيذ التلقائي ( ارشادات البرمجة C# ).

يسمح للسمات أن تكون في الخصائص تلقائية التنفيذ ولكن من الواضح أنها لا يسمح لها في حقول النسخ لأنها غير قابلة للوصول من قبل التعليمات البرمجية للمصدر. إذا كان يجب عليك استخدام سمة في حقل النسخ لخاصية فقط قم بإنشاء خاصية عادية.

راجع أيضًا:

المرجع

الخصائص (دليل البرمجة لـ #C)

المعدّلات (مرجع #C)