Sdílet prostřednictvím


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

Třídy

Přímá základní třída u typu třídy musí být přístupná jako typ třídy.

Rozhraní

Explicitní základní rozhraní typu rozhraní musí být přístupné jako typ rozhraní.

Delegáti

Typ vrácené hodnoty a typy parametrů typ delegáta, musí být přístupné jako typ delegáta.

Konstanty

Typ konstanty musí být přístupné jako konstantu sám.

Pole

Typ pole musí být přístupné jako vlastní pole.

Metody

Typ vrácené hodnoty a typy parametrů metody musí být přístupné jako metoda sám.

Vlastnosti

Typ vlastnosti musí být přístupné jako vlastní vlastnost.

Události

Typ události musí být přístupné jako událost sama.

Indexování

Parametr typu a typy indexovací člen musí být přístupné jako službu indexování, sám.

Operátory

Typ vrácené hodnoty a typy parametrů subjektu musí být přístupné jako operátor sám.

Konstruktory

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

Klíčová slova jazyka C#

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#)

Koncepty

Průvodce programováním v C#

Další zdroje

Referenční dokumentace jazyka C#