Ключевое слово get
.
Ключевое слово get
определяет метод доступа в свойстве или индексаторе, который возвращает значение свойства или элемент индексатора. Дополнительные сведения см. в разделе "Свойства" [Автоматически реализованные свойства](.). /.. /programming-guide/classes-and-structs/автоматически implemented-properties.md) и индексаторы.
В простых случаях, когда свойства get
и set
методы доступа не выполняют никаких других операций, кроме установки или извлечения значения в закрытом поле резервного копирования, можно воспользоваться поддержкой компилятора C# для автоматически реализованных свойств. В следующем примере реализуется Hours
как автоматически реализованное свойство.
class TimePeriod3
{
public double Hours { get; set; }
}
Внимание
Автоматически реализованные свойства не допускаются для объявлений свойств интерфейса или реализации объявления для частичного свойства. Компилятор интерпретирует синтаксис, соответствующий автоматически реализованному свойству, как объявление объявления, а не объявление реализации.
Метод доступа get
часто состоит из одного оператора, который возвращает значение, как в предыдущем примере. Метод доступа get
можно реализовывать как элемент, воплощающий выражение. В приведенном ниже примере методы доступа get
и set
реализуются как члены, воплощающие выражение.
class TimePeriod2
{
private double _seconds;
public double Seconds
{
get => _seconds;
set => _seconds = value;
}
}
Возможно, вам потребуется реализовать один из органов доступа. Свойство с поддержкой поля позволяет компилятору создавать один метод доступа во время записи с другой стороны. Ключевое field
слово, добавленное в качестве предварительной версии функции в C# 13, используется для доступа к полю синтезированной резервной копии компилятора:
class TimePeriod4
{
public double Hours {
get;
set => field = (value >= 0)
? value
: throw new ArgumentOutOfRangeException(nameof(value), "The value must not be negative");
}
}
Внимание
Ключевое field
слово — это предварительная версия функции в C# 13. Для использования контекстного ключевого field
слова необходимо использовать .NET 9 и задать <LangVersion>
элемент preview
в файле проекта.
Следует тщательно использовать функцию field
ключевого слова в классе с именем field
поля. Новое field
ключевое слово тенирует поле с именем field
в области доступа к свойствам. Можно изменить имя переменной field
или использовать @
маркер для ссылки на field
идентификатор как @field
. Дополнительные сведения см. в спецификации компонента для ключевого field
слова.
В приведенном ниже примере определен как метод доступа get
, так и метод доступа set
для свойства с именем Seconds
. Для возвращения значения свойства в нем используется закрытое поле с именем _seconds
.
class TimePeriod
{
private double _seconds;
public double Seconds
{
get { return _seconds; }
set
{
if (value < 0)
{
throw new ArgumentOutOfRangeException(nameof(value), "The value of the time period must be non-negative.");
}
_seconds = value;
}
}
}
Спецификация языка C#
Дополнительные сведения см. в спецификации языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.