TOC

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» является отличным примером переменной, которая всегда должна быть переменной, а не полем: она временная и имеет отношение только к методу, который ее использует, а поля могут легко иметь отношение к другим методам класса.

Резюме

Поля действуют немного как глобальные переменные, потому что они могут использоваться для хранения данных, к которым затем можно получить доступ из любого места внутри класса. К ним также можно получить доступ за пределами декларирующего класса, но обычно для этого используются свойства. Мы поговорим о свойствах в следующей статье.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!