محددات الوصول (Access Modifiers) في C# ببساطة 🚀

محددات الوصول هي كلمات تُستخدم للتحكم في إمكانية الوصول إلى المتغيرات، والخصائص (Properties)، والدوال (Methods)، والفئات (Classes) في C#.


الأنواع الرئيسية لمحددات الوصول

المحدد يمكن الوصول إليه من مثال
public أي مكان في المشروع مثل رقم هاتف عام يمكن للجميع رؤيته
private داخل نفس الفئة فقط مثل بياناتك السرية في المنزل
protected داخل نفس الفئة والفئات المشتقة مثل نصيحة عائلية لا يعرفها إلا الأبناء
internal داخل نفس المشروع (Assembly) مثل معلومات خاصة داخل الشركة
protected internal داخل نفس المشروع أو الفئات المشتقة مزيج من protected و internal
private protected داخل نفس الفئة أو الفئات المشتقة داخل نفس المشروع مزيج من private و protected

1. public - عام (متاح للجميع)

🔹 يمكن الوصول إليه من أي مكان في البرنامج.

public class Car
{
    public string brand = "Toyota";
}

استخدامه:

Car myCar = new Car();
Console.WriteLine(myCar.brand); // ✅ يمكن الوصول إليه

2. private - خاص (مخفي عن الخارج)

🔹 يمكن الوصول إليه فقط داخل نفس الفئة.

class Car
{
    private string secretCode = "ABC123"; // لا يمكن الوصول إليه من خارج الفئة
}

خطأ عند المحاولة من الخارج:

Car myCar = new Car();
Console.WriteLine(myCar.secretCode); // ❌ خطأ! لا يمكن الوصول

الحل؟ استخدم public Method للوصول إليه:

class Car
{
    private string secretCode = "ABC123";

    public string GetSecretCode()
    {
        return secretCode; // يمكن الوصول إليه داخل الفئة
    }
}

3. protected - محمي (متاح للفئات المشتقة فقط)

🔹 يمكن الوصول إليه داخل نفس الفئة والفئات المشتقة فقط.

class Car
{
    protected string engine = "V8";
}

class SportsCar : Car
{
    public void ShowEngine()
    {
        Console.WriteLine(engine); // ✅ يمكن الوصول إليه هنا
    }
}

لكن لا يمكن الوصول إليه من كائن خارجي:

Car myCar = new Car();
Console.WriteLine(myCar.engine); // ❌ خطأ!

4. internal - داخلي (متاح داخل نفس المشروع فقط)

🔹 يمكن الوصول إليه فقط داخل نفس المشروع (Assembly).

internal class Car
{
    internal string model = "Corolla";
}

يعمل داخل نفس المشروع، لكنه غير متاح إذا استوردته من مشروع آخر.


5. protected internal - مزيج من protected و internal

🔹 يمكن الوصول إليه داخل نفس المشروع، أو عبر فئة مشتقة حتى لو كانت في مشروع آخر.

class Car
{
    protected internal string color = "Red";
}

✅ متاح داخل المشروع.
✅ متاح للفئات المشتقة في مشاريع أخرى.


6. private protected - أكثر تقييدًا

🔹 متاح فقط داخل نفس الفئة أو الفئات المشتقة داخل نفس المشروع.

class Car
{
    private protected string tires = "Michelin";
}

لا يمكن الوصول إليه من مشروع آخر، حتى لو كانت الفئة مشتقة.


ملخص سريع 🏆

  • public → متاح في كل مكان.
  • private → متاح داخل الفئة فقط.
  • 🔒 protected → متاح داخل الفئة والفئات المشتقة فقط.
  • 🏢 internal → متاح داخل نفس المشروع فقط.
  • 🔄 protected internal → متاح داخل المشروع + الفئات المشتقة في مشاريع أخرى.
  • 🔐 private protected → متاح داخل الفئة والفئات المشتقة داخل نفس المشروع فقط.

🎯 متى أستخدم كل واحد؟

  • public → إذا كنت تريد أن يكون العنصر متاحًا للجميع.
  • private → إذا كنت تريد إخفاء البيانات وعدم السماح بالوصول المباشر.
  • protected → إذا كنت تريد أن تستخدم الفئات المشتقة هذا العنصر فقط.
  • internal → إذا كان العنصر خاصًا بمشروع واحد فقط.
  • protected internal → إذا كنت تريد مشاركة العنصر داخل المشروع + الفئات المشتقة خارج المشروع.
  • private protected → إذا كنت تريد مشاركة العنصر داخل الفئة والفئات المشتقة في نفس المشروع فقط.

🔹 القاعدة الذهبية: استخدم private كلما أمكن لحماية بياناتك، ثم افتح الوصول عند الحاجة باستخدام محددات أخرى. 🚀

تعليقات

المشاركات الشائعة من هذه المدونة

HTML - Text Formatting تنسيقات النص

HTML - ملخص شامل لأهم التاجات

HTML - Youtube videos تضمين فيديوهات اليوتيوب