Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
När du anger en typ i en deklaration kontrollerar du om tillgänglighetsnivån för typen beror på tillgänglighetsnivån för en medlem eller någon annan typ. Till exempel måste den direkta basklassen vara minst lika tillgänglig som den härledda klassen. Följande deklarationer orsakar ett kompilatorfel eftersom basklassen BaseClass är mindre tillgänglig än MyClass:
class BaseClass {...}
public class MyClass: BaseClass {...} // Error
C#-språkreferensen dokumenterar den senaste versionen av C#-språket. Den innehåller även inledande dokumentation för funktioner i offentliga förhandsversioner för den kommande språkversionen.
Dokumentationen identifierar alla funktioner som först introducerades i de tre senaste versionerna av språket eller i aktuella offentliga förhandsversioner.
Tips/Råd
Information om när en funktion först introducerades i C# finns i artikeln om språkversionshistoriken för C#.
I följande lista sammanfattas begränsningarna för deklarerade tillgänglighetsnivåer.
- Klasser: Den direkta basklassen för en klasstyp måste vara minst lika tillgänglig som själva klasstypen.
- Gränssnitt: De explicita basgränssnitten för en gränssnittstyp måste vara minst lika tillgängliga som själva gränssnittstypen.
- Ombud: Returtypen och parametertyperna för en ombudstyp måste vara minst lika tillgängliga som själva ombudstypen.
- Konstanter: Typen av en konstant måste vara minst lika tillgänglig som själva konstanten.
- Fält: Typen av ett fält måste vara minst lika tillgänglig som själva fältet.
- Metoder: Returtypen och parametertyperna för en metod måste vara minst lika tillgängliga som själva metoden.
- Egenskaper: Typen av en egenskap måste vara minst lika tillgänglig som själva egenskapen.
- Händelser: Typen av en händelse måste vara minst lika tillgänglig som själva händelsen.
- Indexerare: Typ- och parametertyperna för en indexerare måste vara minst lika tillgängliga som indexeraren själv.
- Operatorer: Returtypen och parametertyperna för en operator måste vara minst lika tillgängliga som operatorn själv.
- Konstruktorer: Parametertyperna för en konstruktor måste vara minst lika tillgängliga som själva konstruktorn.
Följande exempel innehåller felaktiga deklarationer av olika typer. Kommentaren efter varje deklaration anger det förväntade kompilatorfelet.
// 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");
}
}
Språkspecifikation för C#
Mer information finns i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.