Udostępnij za pośrednictwem


Modyfikatory dostępu (Podręcznik programowania C#)

Wszystkie typy i elementy członkowskie typu mają poziom dostępności, która kontroluje, czy mogą być używane z innym kodem w sieci zestawu lub innych zespołów.Aby określić dostępność typu lub członka, kiedy to zgłosić, można użyć następujących modyfikatorów dostępu:

  • publiczne
    Typ lub członka jest możliwy przez inny kod w ten sam zestaw lub innego zestawu, który odwołuje się do niej.

  • prywatne
    Typ lub członka jest możliwy tylko przez kod w tej samej klasy lub struktury.

  • chronione
    Typ lub członka jest możliwy tylko przez kod w tej samej klasy lub struct lub w klasie pochodzącej z tej klasy.

  • wewnętrzne
    Typ lub członka jest możliwy przez dowolny kod w tym samym zestawie, ale nie z innego zestawu.

  • protected internal
    Typ lub członka jest możliwy przez dowolny kod w zestawie, w którym jest on zadeklarowany jako lub z poziomu klasy dziedziczącej w innym zestawie.Dostęp z innego zestawu musi odbywać się w deklaracji klasy, który pochodzi od klasy, w którym jest zadeklarowany jako chronione element wewnętrznego i powinna odbywać się za pośrednictwem instancji typu klasy pochodnej.

Następujące przykłady przedstawiają sposób określić modyfikatorów dostępu typu i Członkowskie:

public class Bicycle
{
    public void Pedal() { }
}

Modyfikatory dostępu nie wszystkie mogą być używane przez wszystkich typów lub członków we wszystkich kontekstach, a w niektórych przypadkach dostępności członka typu jest ograniczony przez opcję ułatwień dostępu dla swojego typu zawierające.Więcej szczegółów na temat ułatwień dostępu można znaleźć w poniższych sekcjach.

Klasa i Struct ułatwień dostępu

Klasy i strukturach zadeklarowany bezpośrednio w obrębie obszaru nazw (innymi słowy, które nie są zagnieżdżone wewnątrz innych klas lub struktur) może być publiczne lub wewnętrznego.Wewnętrzny jest ustawieniem domyślnym, jeśli nie określono żadnych modyfikator dostępu.

Członkowie struct, łącznie z klasami zagnieżdżone i strukturach, mogą być deklarowane jako publiczne, wewnętrznego lub prywatnego.Klasa członków, łącznie z klasami zagnieżdżone i strukturach, może być publiczne, chronione wewnętrznego, chronione, wewnętrznego lub prywatnego.Poziom dostępu dla klasy członków i członków struct, łącznie z klasami zagnieżdżone i strukturach, jest oznaczony jako prywatny domyślnie.Prywatne zagnieżdżone typy nie są dostępne od zewnątrz zawierające typu.

Klas pochodnych nie może mieć większą dostępność niż ich typów podstawowych.Innymi słowy, nie może mieć public class B który pochodzi od klasy wewnętrznego A.Jeśli były to dozwolone, miałoby wpływ na podejmowanie A public, ponieważ wszystkich chronionych lub wewnętrznego członków A są dostępne w klasie pochodnej.

Można włączyć szczególnych innych zestawów do dostępu sieci wewnętrznych typów za pomocą InternalsVisibleToAttribute.Aby uzyskać więcej informacji, zobacz Zespoły Friend (C# i Visual Basic).

Klasa i dostępności członka struktury

Członkowie klasy (łącznie z klasami zagnieżdżone i strukturach) może być zadeklarowana z którymkolwiek z pięciu typów dostępu.Nie można zadeklarować członków struct, chronione, ponieważ w strukturach nie obsługuje dziedziczenia.

Normalnie dostępności członka nie jest większa niż dostępność tego typu, który go zawiera.Jednakże publicznego członka klasy wewnętrzne może być dostępne spoza zestawu Jeśli członek implementuje metody interfejsu lub zastępuje metod wirtualnych, które są zdefiniowane w klasie podstawowej publicznych.

Typ którykolwiek członek, który jest polem, właściwości lub zdarzenia musi być co najmniej dostępne jako składnik.Podobnie zwracany typ i typy parametrów którykolwiek członek, który jest metoda, indeksowanie lub pełnomocnik musi być co najmniej dostępne jako składnik.Na przykład, nie może mieć metody publiczne M , które zwraca klasy C chyba że C jest również publiczne.Podobnie, nie może mieć chronionych właściwość typu A Jeśli A jest zadeklarowana jako prywatna.

Operatory zdefiniowane przez użytkownika muszą być zawsze zadeklarowane jako publicznych.Aby uzyskać więcej informacji, zobacz operator (C# odniesienia).

Destruktory nie może mieć modyfikatorów ułatwień dostępu.

Aby ustawić poziom dostępu dla członka klasy lub struktury, należy dodać odpowiednie słowo kluczowe do deklaracji członka, jak pokazano w poniższym przykładzie.

// public class:
public class Tricycle
{
    // protected method:
    protected void Pedal() { }

    // private field:
    private int wheels = 3;

    // protected internal property:
    protected internal int Wheels
    {
        get { return wheels; }
    }
}

[!UWAGA]

Poziom chronionych do wnętrza oznacza chronionych lub wewnętrznego, nie protected i internal.Innymi słowy chroniony członek wewnętrzne są dostępne z dowolnej klasy w tego samego zestawu, łącznie z klas pochodnych.Aby ograniczyć dostępność tylko klas pochodnych w tym samym zestawie, oświadczyć sama klasa wewnętrznego i zadeklarować swoich członków, jako chronione.

Inne typy

Interfejsy zadeklarowane bezpośrednio w obszarze nazw mogą być deklarowane jako publiczny lub wewnętrznego i podobnie do klas i strukturach, domyślnie interfejsy wewnętrznego dostępu.Członków interfejsu są zawsze publiczne, ponieważ celem interfejsu jest umożliwienie innych rodzajów dostępu do klasy lub struktury.Brak modyfikatorów dostępu mogą być stosowane do członków interfejsu.

Członkowie wyliczenia są zawsze publicznych i brak modyfikatorów dostępu mogą być stosowane.

Pełnomocnicy zachowują się jak klas i strukturach.Domyślnie mają dostęp do wnętrza po zadeklarowane bezpośrednio w obrębie obszaru nazw i prywatny dostęp podczas zagnieżdżone.

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka to najlepsze źródło informacji dotyczących składni i zastosowania języka C#.

Zobacz też

Informacje

Klasy i strukturach (Podręcznik programowania C#)

Interfejsy (Podręcznik programowania C#)

prywatne (C# odniesienia)

publicznego (C# odniesienia)

(C# wzorca wewnętrznego)

chronione (C# odniesienia)

Klasa (C# odniesienia)

struct (C# odniesienia)

Interfejs (C# odniesienia)

Koncepcje

Podręcznik programowania C#