Поделиться через


private (справочник по C#)

Ключевое private слово является модификатором доступа члена.

В этой статье рассматривается private доступ. Ключевое private слово также является частью private protected модификатора доступа.

Справочные документы по языку C# описывают последнюю выпущенную версию языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.

Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.

Подсказка

Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей об истории версий языка C#.

Частный доступ — это минимальный уровень доступа. Вы можете получить доступ к частным членам только в тексте класса или структуры, в которой они объявлялись, как показано в следующем примере:

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

Вложенные типы в одном теле также могут получить доступ к этим частным членам.

Если вы ссылаетесь на частный член за пределами класса или структуры, в которой вы объявляете его, компилятор возвращает ошибку.

Сравнение private с другими модификаторами доступа см. в разделе "Уровни специальных возможностей " и "Модификаторы доступа".

В этом примере Employee класс содержит два члена частных данных и _name_salary. Как частные члены, методы-члены являются единственным способом доступа к ним. В примере добавляются открытые методы с именем GetName и Salary разрешение управляемого доступа к частным членам. Член _name обращается через общедоступный метод, и _salary член обращается через общедоступное свойство только для чтения. Дополнительные сведения см. в разделе Свойства.

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;
    }
}

Спецификация языка C#

Дополнительные сведения см. в разделе "Объявленные специальные возможности " в спецификации языка C#. Спецификация языка является авторитетным источником синтаксиса и использования языка C#.

См. также