private (Справочник по C#)
Ключевое слово private
является модификатором доступа к члену.
Эта страница содержит доступ
private
. Ключевое словоprivate
также является частью модификатора доступаprivate protected
.
Закрытый доступ является уровнем доступа с минимальными правами. Доступ к закрытым членам можно получить только внутри тела класса или структуры, в которой они объявлены, как показано в следующем примере:
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#.