Ograniczenia dotyczące używania poziomów ułatwień dostępu (odwołanie w C#)

Po określeniu typu w deklaracji, należy sprawdzić, czy poziom dostępności tego typu jest zależna od poziomu dostępności członka lub innego typu.Na przykład bezpośrednia klasa podstawowa musi być co najmniej dostępne w klasie pochodnej.Następujące deklaracje spowodować błąd kompilatora, ponieważ klasa podstawowa BaseClass jest mniej dostępny niż MyClass:

class BaseClass {...}
public class MyClass: BaseClass {...} // Error

W następującej tabeli podsumowano ograniczenia na poziomy deklarowanych ułatwień dostępu.

Kontekst

Uwagi

Klasy

Bezpośrednia klasa podstawowa typu klasy musi być co najmniej dostępne jako typ klasy.

Interfejsy

Jawne interfejsach podstawowych typu interfejsu musi być co najmniej dostępne jako typ interfejsu.

Pełnomocnicy

Zwracany typ i typy parametrów typu obiektu delegowanego musi być co najmniej dostępne jako typ obiektu delegowanego.

Stałe

Typ stała musi być co najmniej dostępne jako stała, sam.

Pola

Typ pola musi być co najmniej dostępne jako samo pole.

Metody

Zwracany typ i typy parametrów metody musi być co najmniej dostępne jako samą metodę.

Właściwości

Typ właściwości musi być co najmniej dostępne jako właściwości, sobie.

Zdarzenia

Typ zdarzenia musi być co najmniej dostępne jako zdarzenie, sama.

Indeksatory

Typ i parametr rodzaje indeksatora musi być co najmniej dostępne jako sam indeksatora.

Podmioty gospodarcze

Zwracany typ i typy parametrów operatora musi być co najmniej dostępne jako samego operatora.

Konstruktory

Typy parametrów konstruktora musi być co najmniej dostępne jako sam konstruktora.

Przykład

Poniższy przykład zawiera błędne deklaracje różnych typów.Komentarz występujący po każdej deklaracji wskazuje błąd kompilatora oczekiwane.

// 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");
    }
}

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.

Zobacz też

Informacje

Słowa kluczowe języka C#

Modyfikatory dostępu (odwołanie w C#)

Domena dostępności (odwołanie w C#)

Poziomy ułatwień dostępu (odwołanie w C#)

Modyfikatory dostępu (Przewodnik programowania w języku C#)

public (odwołanie w C#)

private (odwołanie w C#)

protected (odwołanie w C#)

internal (odwołanie w C#)

Koncepcje

Przewodnik programowania w języku C#

Inne zasoby

Odwołanie w C#