This article has been localized into Russian by the community.
Поля
Поле - одна из базовых составляющих класса. Это почти то же самое, что и переменная, о чем мы говорили ранее, но объявленная на уровне класса, а не метода. Это различие является достаточно важным и имеет прямое отношение к концепции областей видимости, которая определяет, откуда переменная может быть доступна. Локальная переменная (объявленная внутри метода) может быть использована только внутри этого конкретного метода, в то время как поле класса доступно для всех методов класса и даже для методов внутри других классов, если это позволяет видимость.
Другими словами, разница между переменной и полем во многом определяется тем, где они объявлены. Переменная на уровне класса считается полем, в то время как переменная внутри метода - это просто обычная переменная.
Чаще всего поля объявляют ближе к началу класса, и их видимость часто установлена как private (мы обсудим видимость далее в этой главе). Это может выглядеть примерно так:
public class FieldsSample
{
private string name;
....
У нас есть переменная "name", объявленная на уровне класса, которая доступна для любого метода внутри этого класса. К ней нельзя получить доступ извне класса, но только лишь потому что мы пометили ее как private. Вы можете свободно объявлять поля как protected, если вам нужно иметь к ним доступ из производных классов (классов-наследников), или даже как public, если вы хотите, чтобы они были доступны отовсюду, но имейте ввиду, что рекомендуется работать с полями вне класса, используя свойства, которые мы обсудим в следующей статье.
В приведенном выше примере переменная "name" не имеет начального значения, что означает, что перед использованием ей необходимо присвоить что-либо. Если уже известно, с какого значения должно начинаться поле, его можно легко присвоить одновременно с объявлением:
public class FieldsSample
{
private string name = "John Doe";
....
В качестве альтернативы вы можете присвоить значение полю в конструкторе класса. Это перезапишет любое значение, назначенное полю в точке объявления, и позволит вам назначить динамические значения.
Как мы уже говорили ранее, к членам класса можно обращаться с помощью точечной нотации, например «class.member». Однако, когда мы получаем доступ к члену текущего класса, мы используем ключевое слово «this», например «this.member». Вот более полный пример, где мы объявляем пару полей и используем их внутри метода:
public class Fields1
{
private string name = "John Doe";
private int age = 42;
public void Describe()
{
string description = this.name + " is " + this.age + " years old...";
Console.WriteLine(description);
}
}
В методе Describe () (и не беспокойтесь, мы перейдем к методам в одной из следующих статей) мы объявляем локальную переменную с именем «description», значение которой основано на двух наших объявленных полях. Переменная «description» является отличным примером переменной, которая всегда должна быть переменной, а не полем: она временная и имеет отношение только к методу, который ее использует, а поля могут легко иметь отношение к другим методам класса.
Резюме
Поля действуют немного как глобальные переменные, потому что они могут использоваться для хранения данных, к которым затем можно получить доступ из любого места внутри класса. К ним также можно получить доступ за пределами декларирующего класса, но обычно для этого используются свойства. Мы поговорим о свойствах в следующей статье.