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

Ключевое слово private является модификатором доступа к члену.The private keyword is a member access modifier.

Эта страница содержит доступ private.This page covers private access. Ключевое слово private также является частью модификатора доступа private protected.The private keyword is also part of the private protected access modifier.

Закрытый доступ является уровнем доступа с минимальными правами.Private access is the least permissive access level. Доступ к закрытым членам можно получить только внутри тела класса или структуры, в которой они объявлены, как показано в следующем примере:Private members are accessible only within the body of the class or the struct in which they are declared, as in this example:

class Employee
{
    private int i;
    double d;   // private access by default
}

Вложенные типы в том же теле могут также обращаться к таким закрытым членам.Nested types in the same body can also access those private members.

Ошибка времени компиляции возникнет в том случае, если создать ссылку на закрытый член за пределами класса или структуры, в которой он объявлен.It is a compile-time error to reference a private member outside the class or the struct in which it is declared.

Сравнение модификатора private с другими модификаторами доступа см. в разделах Уровни доступности и Модификаторы доступа.For a comparison of private with the other access modifiers, see Accessibility Levels and Access Modifiers.

ПримерExample

В этом примере класс Employee содержит два закрытых элемента данных — name и salary.In this example, the Employee class contains two private data members, name and salary. Как к закрытым членам, к ним нельзя получить доступ, кроме как через методы членов.As private members, they cannot be accessed except by member methods. Для получения управляемого доступа к закрытым членам можно использовать открытые методы GetName и Salary.Public methods named GetName and Salary are added to allow controlled access to the private members. Доступ к члену name можно поучить через открытый метод, а к члену salary — через открытое свойство только для чтения.The name member is accessed by way of a public method, and the salary member is accessed by way of a public read-only property. (Дополнительные сведения см. в разделе Свойства.)(See Properties for more information.)

class Employee2
{
    private string name = "FirstName, LastName";
    private 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# language specification

Дополнительные сведения см. в разделе Объявленная доступность в Спецификации языка C#.For more information, see Declared accessibility in the C# Language Specification. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.The language specification is the definitive source for C# syntax and usage.

См. такжеSee also