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 |
---|---|
Doğrudan temel sınıf sınıf türü az sınıf türü olarak erişilebilir olmalıdır. |
|
Bir arabirim türü açık temel arabirimde en az arabirim türü olarak erişilebilir olmalıdır. |
|
Dönüş türü ve parametre türleri temsilci türünün en az temsilci türü olarak erişilebilir olmalıdır. |
|
Sabit türü az sabiti olarak olarak erişilebilir olmalıdır. |
|
Bir alanın türünü en az alanı olarak olarak erişilebilir olmalıdır. |
|
Dönüş türü ve bir yöntem parametre türleri az yöntemi olarak olarak erişilebilir olmalıdır. |
|
Bir özelliğin türünü az özellik olarak olarak erişilebilir olmalıdır. |
|
Olay türü en az olay olarak erişilebilir olmalıdır. |
|
Bir dizinleyici türü ve parametre türleri az dizinleyici olarak erişilebilir olmalıdır. |
|
Dönüş türü ve bir işleç parametre türleri az operatörü olarak olarak erişilebilir olmalıdır. |
|
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
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)