Поделиться через


Ключевое слово 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#.

См. также