Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie einen Typ in einer Deklaration angeben, überprüfen Sie, ob die Barrierefreiheitsebene des Typs von der Barrierefreiheitsstufe eines Elements oder eines anderen Typs abhängt. Die direkte Basisklasse muss beispielsweise mindestens so barrierefrei sein wie die abgeleitete Klasse. Die folgenden Deklarationen verursachen einen Compilerfehler, da die Basisklasse BaseClass weniger zugänglich ist als MyClass:
class BaseClass {...}
public class MyClass: BaseClass {...} // Error
Die C#-Sprachreferenz dokumentiert die zuletzt veröffentlichte Version der C#-Sprache. Außerdem enthält sie eine erste Dokumentation zu Funktionen in der öffentlichen Vorschau für die kommende Sprachversion.
In der Dokumentation werden alle Features identifiziert, die in den letzten drei Versionen der Sprache oder in der aktuellen öffentlichen Vorschau eingeführt wurden.
Tipp
Informationen dazu, wann ein Feature erstmals in C# eingeführt wurde, finden Sie im Artikel zum Versionsverlauf der C#-Sprache.
In der folgenden Liste sind die Einschränkungen für deklarierte Barrierefreiheitsebenen zusammengefasst.
- Klassen: Die direkte Basisklasse eines Klassentyps muss mindestens so barrierefrei sein wie der Klassentyp selbst.
- Schnittstellen: Die expliziten Basisschnittstellen eines Schnittstellentyps müssen mindestens so barrierefrei sein wie der Schnittstellentyp selbst.
- Delegaten: Der Rückgabetyp und die Parametertypen eines Delegatentyps müssen mindestens so barrierefrei sein wie der Delegattyp selbst.
- Konstanten: Der Typ einer Konstante muss mindestens so barrierefrei sein wie die Konstante selbst.
- Felder: Der Typ eines Felds muss mindestens so barrierefrei sein wie das Feld selbst.
- Methoden: Der Rückgabetyp und die Parametertypen einer Methode müssen mindestens so barrierefrei sein wie die Methode selbst.
- Eigenschaften: Der Typ einer Eigenschaft muss mindestens so barrierefrei sein wie die Eigenschaft selbst.
- Ereignisse: Der Typ eines Ereignisses muss mindestens so barrierefrei sein wie das Ereignis selbst.
- Indexer: Der Typ und die Parametertypen eines Indexers müssen mindestens so barrierefrei sein wie der Indexer selbst.
- Operatoren: Der Rückgabetyp und die Parametertypen eines Operators müssen mindestens so barrierefrei sein wie der Operator selbst.
- Konstruktoren: Die Parametertypen eines Konstruktors müssen mindestens so barrierefrei sein wie der Konstruktor selbst.
Das folgende Beispiel enthält fehlerhafte Deklarationen verschiedener Typen. Der Kommentar nach jeder Deklaration gibt den erwarteten Compilerfehler an.
// 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#-Sprachspezifikation
Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die endgültige Quelle für C#-Syntax und -Verwendung.