Aracılığıyla paylaş


Erişilebilirlik Düzeylerinin Kullanılmasındaki Kısıtlamalar (C# Başvurusu)

Bir bildiriminde bir tür belirttiğinizde, türü erişilebilirlik düzeyini erişilebilirlik düzeyini üyesinin veya başka bir tür üzerinde bağımlı olup olmadığını denetleyin.Örneğin, doğrudan temel sınıfı en az türetilmiş bir sınıf olarak erişilebilir olmalıdır.Aşağıdaki tanımlamalar çünkü derleyici hatası neden temel sýnýf BaseClass 'den daha az erişilebilir MyClass:

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

Bildirilen erişilebilirlik düzeyleri kısıtlamalar aşağıdaki tabloda özetlenmiştir.

Context

Notlar

Sınıflar

Doğrudan temel sınıf sınıf türü az sınıf türü olarak erişilebilir olmalıdır.

Arayüzler

Bir arabirim türü açık temel arabirimde en az arabirim türü olarak erişilebilir olmalıdır.

Temsilciler

Dönüş türü ve parametre türleri temsilci türünün en az temsilci türü olarak erişilebilir olmalıdır.

Sabitler

Sabit türü az sabiti olarak olarak erişilebilir olmalıdır.

Alanlar

Bir alanın türünü en az alanı olarak olarak erişilebilir olmalıdır.

Yöntemler

Dönüş türü ve bir yöntem parametre türleri az yöntemi olarak olarak erişilebilir olmalıdır.

Özellikler

Bir özelliğin türünü az özellik olarak olarak erişilebilir olmalıdır.

Olaylar

Olay türü en az olay olarak erişilebilir olmalıdır.

Dizin Oluşturucular

Bir dizinleyici türü ve parametre türleri az dizinleyici olarak erişilebilir olmalıdır.

İşleçler

Dönüş türü ve bir işleç parametre türleri az operatörü olarak olarak erişilebilir olmalıdır.

Oluşturucular

Yapıcı parametre türleri az kurucusu olarak erişilebilir olmalıdır.

Örnek

Aşağıdaki örnek, farklı türdeki hatalı bildirimleri içerir.Her bildirim aşağıdaki yorum 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 belirtiminin

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

Ayrıca bkz.

Başvuru

C# Anahtar Sözcükleri

Erişim Değiştiricileri (C# Başvurusu)

Erişilebilirlik Etki Alanı (C# Başvurusu)

Erişilebilirlik Düzeyleri (C# Başvurusu)

Erişim Değiştiricileri (C# Programlama Kılavuzu)

public (C# Başvurusu)

private (C# Başvurusu)

protected (C# Başvurusu)

internal (C# Başvurusu)

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

C# Başvurusu