Sobes.tech
Junior

C# dilinde hangi erişim belirteçleri vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

C# dilinde aşağıdaki erişim belirteçleri bulunmaktadır:

  1. public: Erişim sınırlandırılmamıştır. public olarak işaretlenmiş üyeler, kapsayıcı türlerinin erişilebilir olduğu her yerden erişilebilir.
  2. private: Erişim, kapsayıcı türle sınırlıdır. private olarak işaretlenmiş üyeler, yalnızca aynı sınıf veya yapı içindeki koddan erişilebilir.
  3. protected: Erişim, kapsayıcı tür veya ondan türeyen türlerle sınırlıdır. protected olarak işaretlenmiş üyeler, kendi sınıfı ve türeyen sınıflar içinde erişilebilir.
  4. internal: Erişim, mevcut derleme ile sınırlıdır (.dll veya .exe). internal olarak işaretlenmiş üyeler, aynı derleme içindeki her yerden erişilebilir.
  5. protected internal: Erişim, mevcut derleme veya başka derlemelerdeki türeyen türlerle sınırlıdır. Bu, protected ve internal kombinasyonudur.
  6. private protected: Erişim, kapsayıcı tür veya ondan türeyen türlerle, sadece aynı derleme içinde sınırlıdır. Bu, private ve protected kombinasyonudur.
// Erişim belirteçlerinin kullanımına örnek
public class MyClass
{
    public int PublicField;        // Her yerden erişilebilir
    private int PrivateField;      // Sadece MyClass içinde erişilebilir
    protected int ProtectedField;  // MyClass ve türeyen sınıflarda erişilebilir
    internal int InternalField;    // Mevcut derleme içinde erişilebilir
    protected internal int ProtectedInternalField; // Mevcut derleme içinde veya türeyen sınıflarda erişilebilir
    private protected int PrivateProtectedField; // MyClass veya bu derlemedeki türeyen sınıflarda erişilebilir

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

public class DerivedClass : MyClass
{
    void DerivedMethod()
    {
        ProtectedField = 20; // OK
        // PrivateField = 30; // Hata - özel alan kalıtımda erişilebilir değil
        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; // Hata
        // mc.ProtectedField = 5; // Hata
        // mc.PrivateProtectedField = 6; // Hata
    }
}