Udostępnij przez


private (odwołanie w C#)

Słowo kluczowe private jest modyfikatorem dostępu.

W tym artykule opisano private dostęp. Słowo private kluczowe jest również częścią private protected modyfikatora dostępu.

Dokumentacja języka C# zawiera ostatnio wydaną wersję języka C#. Zawiera również początkową dokumentację dla funkcjonalności w publicznych wersjach testowych nadchodzącego wydania języka.

Dokumentacja identyfikuje dowolną funkcję po raz pierwszy wprowadzoną w ostatnich trzech wersjach języka lub w bieżącej publicznej wersji zapoznawczej.

Wskazówka

Aby dowiedzieć się, kiedy funkcja została po raz pierwszy wprowadzona w języku C#, zapoznaj się z artykułem dotyczącym historii wersji języka C#.

Dostęp prywatny jest najmniej permissive poziom dostępu. Dostęp do prywatnych elementów członkowskich można uzyskać tylko w treści klasy lub struktury, w której je deklarujesz, jak pokazano w poniższym przykładzie:

class Employee
{
    private int _i;
    double _d;   // private access by default
}

Zagnieżdżone typy w tej samej treści mogą również uzyskiwać dostęp do tych prywatnych elementów członkowskich.

Jeśli odwołujesz się do prywatnego elementu członkowskiego poza klasą lub strukturą, w której ją deklarujesz, kompilator zwraca błąd.

Aby uzyskać porównanie private z innymi modyfikatorami dostępu, zobacz Poziomy ułatwień dostępu i modyfikatory dostępu.

W tym przykładzie Employee klasa zawiera dwa prywatne składowe danych i _name_salary. Jako prywatne elementy członkowskie metody członkowskie są jedynym sposobem uzyskiwania do nich dostępu. W przykładzie dodano metody publiczne o nazwie GetName i Salary w celu umożliwienia kontrolowanego dostępu do prywatnych elementów członkowskich. Dostęp _name do elementu członkowskiego jest uzyskiwany za pomocą metody publicznej, a _salary dostęp do elementu członkowskiego uzyskuje się za pomocą publicznej właściwości tylko do odczytu. Aby uzyskać więcej informacji, zobacz Właściwości.

class Employee2
{
    private readonly string _name = "FirstName, LastName";
    private readonly double _salary = 100.0;

    public string GetName()
    {
        return _name;
    }

    public double Salary
    {
        get { return _salary; }
    }
}

class PrivateTest
{
    static void Main()
    {
        var e = new Employee2();

        // The data members are inaccessible (private), so
        // they can't be accessed like this:
        //    string n = e._name;
        //    double s = e._salary;

        // '_name' is indirectly accessed via method:
        string n = e.GetName();

        // '_salary' is indirectly accessed via property
        double s = e.Salary;
    }
}

Specyfikacja języka C#

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

Zobacz także