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

الكلمة الأساسية internal هي معدّل وصول للأنواع وأعضاء النوع. الأنواع الداخلية أو الأعضاء قابلين للوصول فقط داخل ملفات في نفس التجميع كما هو موضح في هذا المثال:

public class BaseClass 
{
    // Only accessible within the same assembly
    internal static int x = 0;
}

الأنواع أو الأعضاء التي تم الوصول للمعدّل protected internal يمكن الوصول إليها من التجميع الحالي أو من أنواع مشتقة من الفئة التي تحتوي على الصفحة.

للحصول على مقارنة لـ internal معمعدّلات وصول أخرى, راجع مستويات الوصول (مرجع #C) و معدلات الاتصال ( ارشادات البرمجة C# ).

لمزيد من المعلومات حول قوائم الشجر راجع التجميعات و ذاكرة التخزين المؤقتة للتجميع العمومي (C# البرمجة الدليل).

استخدام مشترك للوصول الداخلي لتطوير القائم على مكوّن لأنه يمكن مجموعة من المكوّنات للتعاون بشكل خاص دون التعرض لبقية التعليمات البرمجية للتطبيق. وعلى سبيل المثال، يمكن أن توفر إطار العمل لبناء واجهات المستخدم الرسومية Control و فئات Form التي تتعاون باستخدام الأعضاء مع الوصول الداخلي. لأن هؤلاء الأعضاء داخليون, فإنهم لا يتعرضون للتعليمات البرمجية التي تستخدم إطار العمل.

وهو خطأ للإشارة على نوع أو عضو بالوصول الداخلي خارج الجمعية الذي تم تعريفه خلالها.

ملاحظة

الأسلوب internalvirtual يمكن تجاوزه في بعض اللغات، مثل نصية Microsoft المتوسطة اللغة (MSIL) باستخدام Ilasm.exe, على الرغم من أنه لا يتم التجاوز باستخدام C#‎.

مثال

يحتوي هذا المثال على اثنين من ملفات, Assembly1.cs و Assembly1_a.cs. أول ملف يحتوي على فئة داخلية أساسية, BaseClass. في الملف الثاني, محاولة لإنشاء مثيل BaseClass سوف ينتج خطأ.

// Assembly1.cs
// Compile with: /target:library
internal class BaseClass 
{
   public static int intM = 0;
}

// Assembly1_a.cs
// Compile with: /reference:Assembly1.dll
class TestAccess 
{
   static void Main() 
   {
      BaseClass myBase = new BaseClass();   // CS0122
   }
}

في هذا المثال، تم استخدام نفس الملفات المستخدمة في المثال 1 وتغيير مستوى إمكانية وصول ذوي الاحتياجات الخاصة BaseClass إلى public. أيضاً لتغيير مستوى إمكانية وصول ذوي الاحتياجات الخاصة للعضو IntM إلى internal. في هذه الحالة، يمكنك إنشاء فئة, لكن لا يمكنك الوصول للعضو الداخلي.

// Assembly2.cs
// Compile with: /target:library
public class BaseClass 
{
   internal static int intM = 0;
}

// Assembly2_a.cs
// Compile with: /reference:Assembly1.dll
public class TestAccess 
{
   static void Main() 
   {
      BaseClass myBase = new BaseClass();   // Ok.
      BaseClass.intM = 444;    // CS0117
   }
}

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

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

راجع أيضًا:

المرجع

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

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

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

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

عام (C# مرجع)

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

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

المبادئ

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

موارد أخرى

مرجع C#‎