قيود استخدام معدلات الوصول (مرجع #C)

عندما تقوم بتعريف نوع تأكد من رؤية ما إذا كان هذا النوع قابل للوصول كعضو أو نوع آخر. على سبيل المثال، يجب أن تكون فئة الأساس المباشرة قابلة للوصول على الأقل كالفئة المشتقة. ستؤدي التعريفات التالية خطأ في المحول البرمجي لأن قبولية الوصول للفئة الأساسية BaseClass أقل من MyClass:

class BaseClass {...}
public class MyClass: BaseClass {...} // Error

يلخص الجدول التالي قيود استخدام معدلات الوصول المُعلَنة.

Context

ملاحظات

الفئات

يجب على فئة الأساس المباشرة من نوع فئة معينة أن تكون على الأقل بمعدل وصول نوع الفئة نفسها.

الواجهات

يجب على الواجهات الأساسية الصريحة من نوع واجهة معينة أن تكون على الأقل بمعدل وصول نوع الواجهة نفسها.

المفوضون

يجب على نوع الإرجاع وأنواع المعلمات في نوع تفويض معين أن يكون على الأقل بمعدل وصول نوع التفويض نفسه.

الثوابت

يجب أن يكون نوع الثابت على الأقل بمعدل وصول الثابت نفسه.

الحقول

يجب أن يكون نوع الحقل على الأقل بمعدل وصول الحقل نفسه.

الأساليب

يجب أن يكون نوع الإرجاع وأنواع المعلمات للأسلوب على الأقل بمعدل وصول الأسلوب نفسه.

Properties

يجب أن يكون نوع الخاصية على الأقل بمعدل وصول الخاصية نفسها.

أحداث

يجب أن يكون نوع الحدث على الأقل بمعدل وصول الحدث نفسه.

المفهرسات

يجب أن يكون نوع وأنواع معلمات مفهرس معين على الأقل بمعدل وصول المفهرس نفسه.

عوامل التشغيل

يجب أن يكون نوع إرجاع وأنواع معلمات عامل تشغيل معين على الأقل بمعدل وصول العامل نفسه.

جهات الإنشاء

يجب أن تكون أنواع المعلمات لدالة الإنشاء على الأقل بمعدل وصول دالة الإنشاء نفسها.

مثال

يحتوي المثال التالي على تعريفات خاطئة لأنواع مختلفة. التعليق الذي يتبع كل تعريف يشير إلى خطأ المحول البرمجي المتوقع.

// Restrictions on Using Accessibility Levels
// CS0052 expected as well as CS0053, CS0056, and CS0057
// To make the program work, change access level of both class B
// and MyPrivateMethod() to public.

using System;

// A delegate:
delegate int MyDelegate();

class B
{
    // A private method:
    static int MyPrivateMethod()
    {
        return 0;
    }
}

public class A
{
    // Error: The type B is less accessible than the field A.myField.
    public B myField = new B();

    // Error: The type B is less accessible
    // than the constant A.myConst.
    public readonly B myConst = new B();

    public B MyMethod()
    {
        // Error: The type B is less accessible 
        // than the method A.MyMethod.
        return new B();
    }

    // Error: The type B is less accessible than the property A.MyProp
    public B MyProp
    {
        set
        {
        }
    }

    MyDelegate d = new MyDelegate(B.MyPrivateMethod);
    // Even when B is declared public, you still get the error: 
    // "The parameter B.MyPrivateMethod is not accessible due to 
    // protection level."

    public static B operator +(A m1, B m2)
    {
        // Error: The type B is less accessible
        // than the operator A.operator +(A,B)
        return new B();
    }

    static void Main()
    {
        Console.Write("Compiled successfully");
    }
}

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

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

راجع أيضًا:

المرجع

الكلمات الأساسية لـ #C

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

مجال الوصول (مرجع #C)

مستويات الوصول (مرجع #C)

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

عام (C# مرجع)

خاصة (C# مرجع)

المحمي ( مرجع C# )

الداخلية ( مرجع C# )

المبادئ

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

موارد أخرى

مرجع C#‎