0Pricing
C# Academy · درس

public وinternal وprotected وprivate (مع ملاحظة حول file)

تعلّم كيف يغيّر public وinternal وprotected وprivate مستوى الظهور، واطّلع على قواعد الوراثة والتجميع نفسه. ملاحظة: الوصول المحدد على مستوى الملف غير متاح في C# 6.

public وinternal وprotected وprivate (مع ملاحظة حول file) درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.

نظرة عامة على معدّلات الوصول

الهدف: اختيار مستوى الوصول المناسب.

  • public: من أي مكان
  • internal: ضمن التجميعة نفسها
  • protected: الفئات المشتقة
  • private: الفئة نفسها
  • file: أحدث من C# 6 (للمعلومات فقط)

private مقابل public

احرصوا على إبقاء الحقول private وإتاحة أعضاء public بعد التحقق من صحتها.

using System;

// private: only inside the class; public: everywhere the class is visible
public class Box
{
  private int _width;             // hidden storage
  public int Width                // controlled access
  {
    get { return _width; }
    set { _width = value < 0 ? 0 : value; } // simple guard
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Box b = new Box();
    // b._width = -5; // INVALID: private (kept as comment)
    b.Width = 10;      // OK: public property
    Console.WriteLine("Width = " + b.Width);
  }
}

protected في الوراثة

يُستخدم protected للوراثة: يمكن للأنواع المشتقة استخدامه، ولا يمكن للجهات الخارجية ذلك.

using System;

public class BaseCounter
{
  protected int Count; // derived classes can see this
  public int Value() { return Count; }
}

public class StepCounter : BaseCounter
{
  public void Step() { Count = Count + 1; } // allowed: protected
}

public class Program
{
  public static void Main(string[] args)
  {
    StepCounter sc = new StepCounter();
    sc.Step();
    // sc.Count = 5; // INVALID from outside (commented)
    Console.WriteLine("Value = " + sc.Value());
  }
}

الوصول باستخدام internal

يحدّ internal مستوى الظهور ليقتصر على التجميعة الحالية (بنية المكتبة أو التطبيق).

using System;

// internal type: visible only inside this assembly
internal class InternalHelper
{
  public static string Ping() { return "pong"; }
}

// public type can use internal from the same assembly
public class UsesInternal
{
  public string Call() { return InternalHelper.Ping(); }
}

public class Program
{
  public static void Main(string[] args)
  {
    UsesInternal u = new UsesInternal();
    Console.WriteLine(u.Call());
  }
}

protected internal

يعني protected internal أن الوصول متاح للأنواع المشتقة أو من أي مكان داخل التجميعة نفسها.

using System;

public class LibraryBase
{
  // Accessible to derived types OR anywhere in the same assembly
  protected internal void Touch() { Console.WriteLine("touched"); }
}

public class LibChild : LibraryBase
{
  public void Use() { Touch(); } // via inheritance
}

public class Program
{
  public static void Main(string[] args)
  {
    LibChild c = new LibChild();
    c.Use();

    LibraryBase b = new LibraryBase();
    b.Touch(); // same assembly, allowed
  }
}

ملاحظة حول معدّل file ونصائح

ملاحظة: ظهر معدّل الوصول file في إصدارات C# الأحدث (وليس في C# 6). في C# 6، التزموا بـ public وinternal وprotected وprivate وprotected internal.

  • فضّلوا private افتراضيًا
  • استخدموا public فقط لواجهة برمجة التطبيقات
  • استخدموا internal لإخفاء التنفيذ عن التجميعات الأخرى
  • استخدموا protected للتعاون بين الفئة الأساسية والفئات المشتقة

معنى internal

تحقق سريع: ماذا يعني معدّل الوصول internal في C#؟

مراجعة

مراجعة: اختاروا أقل مستوى وصول مطلوب: private → protected/internal → public. لا يتضمن C# 6 معدّل file الأحدث؛ واعتمدوا على internal للإخفاء على مستوى التجميعة.

الأسئلة الشائعة

هل درس «public وinternal وprotected وprivate (مع ملاحظة حول file)» مجاني؟

نعم — نص درس «public وinternal وprotected وprivate (مع ملاحظة حول file)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.

ماذا ستتعلم في «public وinternal وprotected وprivate (مع ملاحظة حول file)»؟

تعلّم كيف يغيّر public وinternal وprotected وprivate مستوى الظهور، واطّلع على قواعد الوراثة والتجميع نفسه. ملاحظة: الوصول المحدد على مستوى الملف غير متاح في C# 6. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.

كم من الوقت يستغرق درس «public وinternal وprotected وprivate (مع ملاحظة حول file)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. public وinternal وprotected وprivate (مع ملاحظة حول file)
  2. مساحات الأسماء وتوجيهات using وglobal usings (ملاحظة)
  3. الأنواع والملفات الجزئية
← العودة إلى C# Academy