Sobes.tech
Junior

C#-də giriş modifikatorları hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

C# dilində aşağıdakı giriş modifikatorları mövcuddur:

  1. public: Giriş məhdudlaşdırılmayıb. public ilə işarələnmiş üzvlər, onların daxil olduğu tip əlçatan olduğu hər yerdən əlçatan olur.
  2. private: Giriş, daxil olduğu tip ilə məhdudlaşdırılıb. private ilə işarələnmiş üzvlər, yalnız eyni sinif və ya struktur daxilindəki koddan əlçatan olur.
  3. protected: Giriş, daxil olduğu tip və ya ondan törəyən tiplərlə məhdudlaşdırılıb. protected ilə işarələnmiş üzvlər, öz sinfi və törəyən siniflər daxilində əlçatan olur.
  4. internal: Giriş, cari yığmaya (.dll və ya .exe) məhdudlaşdırılıb. internal ilə işarələnmiş üzvlər, eyni yığma daxilində hər yerdən əlçatan olur.
  5. protected internal: Giriş, cari yığma və ya digər yığmalardakı daxil olan tiplərlə məhdudlaşdırılıb. Bu, protectedinternal-in birləşməsidir.
  6. private protected: Giriş, daxil olduğu tip və ya ondan törəyən tiplərlə, yalnız eyni yığmada məhdudlaşdırılıb. Bu, privateprotected-in birləşməsidir.
// Giriş modifikatorlarının istifadəsinə nümunə
public class MyClass
{
    public int PublicField;        // Hər yerdən əlçatan
    private int PrivateField;      // Yalnız MyClass daxilində əlçatan
    protected int ProtectedField;  // MyClass və törəyən siniflərdə əlçatan
    internal int InternalField;    // Cari yığma daxilində əlçatan
    protected internal int ProtectedInternalField; // Cari yığma və ya törəyən siniflərdə əlçatan
    private protected int PrivateProtectedField; // MyClass və ya eyni yığmadakı törəyən siniflərdə əlçatan

    void MyMethod()
    {
        PrivateField = 10; // OK
    }
}

public class DerivedClass : MyClass
{
    void DerivedMethod()
    {
        ProtectedField = 20; // OK
        // PrivateField = 30; // Xəta - şəxsi sahə irsiyyətdə əlçatan deyil
        ProtectedInternalField = 40; // OK
        PrivateProtectedField = 50; // OK
    }
}

public class AnotherClassInSameAssembly
{
    void AnotherMethod()
    {
        MyClass mc = new MyClass();
        mc.PublicField = 1; // OK
        mc.InternalField = 2; // OK
        mc.ProtectedInternalField = 3; // OK
        // mc.PrivateField = 4; // Xəta
        // mc.ProtectedField = 5; // Xəta
        // mc.PrivateProtectedField = 6; // Xəta
    }
}