الحقول ( ارشادات البرمجة C# )

الـ حقل هو متغير من أي نوع يتم تعريف مباشرة في فئة أو لبنية. تكون حقولالأعضاء من تلك التي تحتوي على نوع.

وقد تملك الفئة أو البنية حقول مثيلة أو حقول ثابتة أو كليهما. حقول المثيل هي محددة إلى مثيل من نوع. إذا كان لديك فئة T, بحقل مثيل F يمكنك إنشاء كائنين من نوع T والعمل على تعديل قيمة F في كل كائن دون التأثير على القيمة الموجودة في كائن آخر . وعلى النقيض، فإن الحقل الثابت ينتمي إلى الفئة نفسها، وهي مشتركة بين الكل المثيلات لتلك الفئة. التغييرات التي تم إجراؤها من مثيل ستكون واضحة فوراً لمثيلات B و C إذا كانت الوصول حقل.

عليك استخدام الحقول فقط للمتغيرات التي لها إمكانية الوصول إلى القطاعات الخاص أو المحمية. ينبغي توفير البيانات التي تعرض الفئة الخاصة بك إلى رمز العميل من خلال أساليب, خصائص و مفهرسات. باستخدام هذه الصيّغ للوصول الغير المباشر للحقول الداخلية،يمكنك حمايتها ضد قيم الإدخال الغير صالحة. يسمى حقل الخاص بتخزين البيانات المعروضة بواسطة خاصية عامة بـ مخزن النسخ أو حقل الدعم.

تخزن عادة حقول البيانات التي يجب أن تكون متاحة لأسلوب فئة واحدة أو أكثر، ويجب أن يتم تخزينها لفترة أطول من عمر أي أسلوب واحد. على سبيل المثال، قد تكون الفئة التي تمثل تاريخ تقويم ثلاثة حقول لأعداد صحيحة: واحد للشهر, و واحد لليوم, و واحد للسنة. يجب أن يكون تعريف المتغيرات التي لا يتم استخدامها خارج نطاق أسلوب واحد لـ المتغيرات المحلية داخل هيئة الأسلوب نفسه.

و يتم تعريف الحقول في كتلة الفئة بتحديد مستوى الوصول إلى الميدان، متبوعاً بنوع الحقل، يتبعه اسم الحقل. فعلى سبيل المثال:

public class CalendarEntry
{
    // private field
    private DateTime date;

    // public field (Generally not recommended)
    public string day;

    // Public property exposes date field safely.
    public DateTime Date 
    {
        get 
        {
            return date;
        }
        set 
        {
            if(value.Year > 1980 || value.Year <= 2008)
            {
                date = value;
            }
            else
                throw new ArgumentOutOfRangeException();
        }

    }

    // Public method also exposes date field safely.
    public void SetDate(string dateString)
    {
        DateTime dt = Convert.ToDateTime(dateString);

        if (dt.Year > 1980 || dt.Year <= 2008)
        {
            date = dt;
        }
        else
            throw new ArgumentOutOfRangeException();            
    }

    public TimeSpan GetTimeSpan(string dateString)
    {
        DateTime dt = Convert.ToDateTime(dateString);

        if (dt != null && dt.Ticks < date.Ticks)
        {
            return date - dt;
        }
        else
            throw new ArgumentOutOfRangeException();  

    }
}

للوصول إلى حقل في الكائن قم بإضافة نقطة بعد اسم الكائن متبوعاً باسم الحقل كما هو موضح في objectname.fieldname. فعلى سبيل المثال:

CalendarEntry birthday = new CalendarEntry();
birthday.day = "Saturday";

ويمكن منح الحقل قيمة أولية باستخدام عامل التعيين عند تعريف الحقل. للتعيين التلقائي لحقل الـ day إلى "Monday"، على سبيل المثال، تعريف day كما في المثال التالي:

public class CalendarDateWithInitialization
{
    public string day = "Monday";
    //...
}

تتم تهيئة الحقول مباشرة قبل الدالة الإنشائية أن يتم استدعاء مثيل الكائن. إذا قامت الدالة الإنشائية بتعيين قيمة حقل، فإن هذا سيؤدي إلى تجاوز أية قيمة خلال تعريف الحقل. لمزيد من المعلومات، راجع استخدام المنشئات (البرمجة C# إرشادات).

ملاحظة

مهيئ الحقل لا يمكنه الإشارة إلى حقول المثيل الأخرى .

يمكن تعليم الحقول كـ العام, خاص, محمي, داخلي,أو protected internal. وتحدد معدلات الوصول هذه كيفية وصول المستخدمين لفئة الثابت. لمزيد من المعلومات، راجع معدلات الاتصال ( ارشادات البرمجة C# ).

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

يمكن تعريف الحقل لـ للقراءة فقط. يمكن تعيين قيمة حقل للقراءة فقط أو في الدالة الإنشائية أثناء التهيئة. static readonly
للقراءة فقط حقل ثابت مشابهة جداً للثابت، إلا أن مترجم C# لا يمكنه الوصول إلى قيمة الحقل الثابت للقراءة فقط في وقت الترجمة،و لكن فقط في وقت التشغيل. لمزيد من المعلومات، راجع الثوابت ( ارشادات البرمجة C# ).

مواصفات لغة #C

لمزيد من المعلومات، راجع مواصفات لغة #C. مواصفات اللغة هي المصدر النهائي لبناء جملة C# واستخدامها.

راجع أيضًا:

المرجع

الفئات والبنيات (دليل البرمجة لـ #C)

استخدام المنشئات (البرمجة C# إرشادات)

الوراثة (دليل البرمجة لـ #C)

معدلات الاتصال ( ارشادات البرمجة C# )

الفئات المجردة والفئات المغلقة وأعضاء الفئات (دليل البرمجة لـ #C)

المبادئ

دليل البرمجة لـ #C