Aracılığıyla paylaş


Erişilebilirlik düzeylerini kullanma kısıtlamaları (C# Başvurusu)

Bildirimde bir tür belirttiğinizde, türün erişilebilirlik düzeyinin bir üyenin erişilebilirlik düzeyine mi yoksa başka bir türe mi bağlı olduğunu denetleyin. Örneğin, doğrudan temel sınıfın en az türetilmiş sınıf kadar erişilebilir olması gerekir. Aşağıdaki bildirimler, temel sınıfın BaseClass değerinden MyClassdaha az erişilebilir olması nedeniyle derleyici hatasına neden olur:

class BaseClass {...}
public class MyClass: BaseClass {...} // Error

C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.

Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.

Tavsiye

Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.

Aşağıdaki liste, bildirilen erişilebilirlik düzeylerindeki kısıtlamaları özetler.

  • Sınıflar: Bir sınıf türünün doğrudan temel sınıfı en az sınıf türünün kendisi kadar erişilebilir olmalıdır.
  • Arabirimler: Arabirim türünün açık temel arabirimleri en az arabirim türünün kendisi kadar erişilebilir olmalıdır.
  • Temsilciler: Temsilci türünün dönüş türü ve parametre türleri en az temsilci türünün kendisi kadar erişilebilir olmalıdır.
  • Sabitler: Sabitin türü en az sabitin kendisi kadar erişilebilir olmalıdır.
  • Alanlar: Bir alanın türü en az alanın kendisi kadar erişilebilir olmalıdır.
  • Yöntemler: Bir yöntemin dönüş türü ve parametre türleri en az yöntemin kendisi kadar erişilebilir olmalıdır.
  • Özellikler: Bir özelliğin türü en az özelliğin kendisi kadar erişilebilir olmalıdır.
  • Olaylar: Bir olayın türü en az olayın kendisi kadar erişilebilir olmalıdır.
  • Dizin oluşturucular: Dizin oluşturucunun türü ve parametre türleri en az dizin oluşturucunun kendisi kadar erişilebilir olmalıdır.
  • İşleçler: Bir işlecin dönüş türü ve parametre türleri en az işlecin kendisi kadar erişilebilir olmalıdır.
  • Oluşturucular: Oluşturucunun parametre türleri en az oluşturucunun kendisi kadar erişilebilir olmalıdır.

Aşağıdaki örnekte farklı türlerdeki hatalı bildirimler yer alır. Her bildirimi izleyen açıklama beklenen derleyici hatasını gösterir.

// Restrictions on Using Accessibility Levels
// CS0052 expected as well as CS0053, CS0056, and CS0057
// To make the program work, change access level of both class B
// and MyPrivateMethod() to public.

using System;

// A delegate:
delegate int MyDelegate();

class B
{
    // A private method:
    static int MyPrivateMethod()
    {
        return 0;
    }
}

public class A
{
    // Error: The type B is less accessible than the field A.myField.
    public B myField = new B();

    // Error: The type B is less accessible
    // than the constant A.myConst.
    public readonly B myConst = new B();

    public B MyMethod()
    {
        // Error: The type B is less accessible
        // than the method A.MyMethod.
        return new B();
    }

    // Error: The type B is less accessible than the property A.MyProp
    public B MyProp
    {
        set
        {
        }
    }

    MyDelegate d = new MyDelegate(B.MyPrivateMethod);
    // Even when B is declared public, you still get the error:
    // "The parameter B.MyPrivateMethod is not accessible due to
    // protection level."

    public static B operator +(A m1, B m2)
    {
        // Error: The type B is less accessible
        // than the operator A.operator +(A,B)
        return new B();
    }

    static void Main()
    {
        Console.Write("Compiled successfully");
    }
}

C# dil belirtimi

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# söz dizimi ve kullanımı için kesin kaynaktır.

Ayrıca bakınız