Omezení používání úrovní přístupu (Referenční dokumentace jazyka C#)
Při zadání typu v prohlášení Kontrola usnadnění přístupu typu je závislé na úroveň usnadnění člena nebo jiného typu.Přímá základní třída například musí být přístupné jako odvozené třídy.Následující prohlášení způsobit chybu kompilátoru, protože základní třída BaseClass je přístupná méně než MyClass:
class BaseClass {...}
public class MyClass: BaseClass {...} // Error
Následující tabulka shrnuje omezení úrovně prohlášených usnadnění.
Kontext |
Poznámky |
---|---|
Přímá základní třída u typu třídy musí být přístupná jako typ třídy. |
|
Explicitní základní rozhraní typu rozhraní musí být přístupné jako typ rozhraní. |
|
Typ vrácené hodnoty a typy parametrů typ delegáta, musí být přístupné jako typ delegáta. |
|
Typ konstanty musí být přístupné jako konstantu sám. |
|
Typ pole musí být přístupné jako vlastní pole. |
|
Typ vrácené hodnoty a typy parametrů metody musí být přístupné jako metoda sám. |
|
Typ vlastnosti musí být přístupné jako vlastní vlastnost. |
|
Typ události musí být přístupné jako událost sama. |
|
Parametr typu a typy indexovací člen musí být přístupné jako službu indexování, sám. |
|
Typ vrácené hodnoty a typy parametrů subjektu musí být přístupné jako operátor sám. |
|
Typy parametrů konstruktoru musí být přístupné jako konstruktor sám. |
Příklad
Následující příklad obsahuje chybnou prohlášení různých typů.Komentář následující deklaraci označuje očekávané kompilátor chybu.
// 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");
}
}
Specifikace jazyka C#
Další informace najdete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.
Viz také
Referenční dokumentace
Modifikátory přístupu (Referenční dokumentace jazyka C#)
Doména přístupnosti (Referenční dokumentace jazyka C#)
Úrovně přístupnosti (Referenční dokumentace jazyka C#)
Modifikátory přístupu (Průvodce programováním v C#)
public (Referenční dokumentace jazyka C#)
private (Referenční dokumentace jazyka C#)
protected (Referenční dokumentace jazyka C#)
internal (Referenční dokumentace jazyka C#)