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


Используйте тело выражения для свойств (IDE0025)

Свойство Ценность
идентификатор правила IDE0025
заголовок Используйте тело выражения для свойств
категории Стиль
подкатегории Языковые правила (элементы с выражением)
применимые языки C#
вариантов csharp_style_expression_bodied_properties

Обзор

Это правило стиля касается использования тел выражений, и блоков для свойств.

Параметры

Задайте значение связанной опции для этого правила, чтобы указать, предпочтительны ли тела выражений или блоки тел для свойств, и если предпочтительны тела выражений, предпочтительны ли они только для однострочных выражений.

Дополнительные сведения о настройке параметров см. в формате параметров .

стиль_выражения_в_свойствах_в_C♯

Свойство Ценность Описание
название параметра Стиль свойств C# на основе выражений
значения опций true Предпочитайте использовать тела выражений для свойств
when_on_single_line Предпочитать тела выражений для свойств, когда они будут одной строкой
false Предпочтительнее использовать тела-блоки для свойств
значение параметра по умолчанию true
// csharp_style_expression_bodied_properties = true
public int Age => _age;

// csharp_style_expression_bodied_properties = false
public int Age { get { return _age; }}

Это правило против IDE0027

Это правило, а также IDE0025, IDE0027 (использование тела выражения для методов доступа) и очень похожи. IDE0025 относится к свойству в целом, в то время как IDE0027 конкретно касается аксессорных частей свойства.

Для свойства только для чтения, которое просто возвращает значение, не выполняя никаких вычислений, если для IDE0025 задано значение csharp_style_expression_bodied_properties = false, но IDE0027 задано значение csharp_style_expression_bodied_accessors = true, в конечном итоге получается свойство, как показано ниже:

public int TemperatureF
{
    get => _temp;
}

Но если задать IDE0025 значение csharp_style_expression_bodied_properties = true, свойство упрощается еще больше (даже если задать IDE0027 значение csharp_style_expression_bodied_accessors = false):

public int TemperatureF => _temp;

Для свойства чтения и записи разница становится немного более очевидной, так как свойство не может быть записано в виде выражения (так как оно состоит из нескольких строк). Таким образом, даже если IDE0025 установлен на csharp_style_expression_bodied_properties = true, у вас все равно будут фигурные скобки, то есть тело блока.

В следующих примерах показано, как выглядит свойство с различными сочетаниями двух параметров.

// csharp_style_expression_bodied_properties = false
// csharp_style_expression_bodied_accessors = true
public int TemperatureB
{
    get => _temp;
}

// csharp_style_expression_bodied_properties = true
// csharp_style_expression_bodied_accessors = true (or false)
public int TemperatureC => _temp;

// csharp_style_expression_bodied_properties = true (or false)
// csharp_style_expression_bodied_accessors = true
public int TemperatureD
{
    get => _temp;
    set => _temp = value;
}

// csharp_style_expression_bodied_properties = true
// csharp_style_expression_bodied_accessors = false
public int TemperatureE
{
    get
    {
        return _temp;
    }
    set
    {
        _temp = value;
    }
}

Подавление предупреждения

Если вы хотите отключить только одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable IDE0025
// The code that's violating the rule is on this line.
#pragma warning restore IDE0025

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации .

[*.{cs,vb}]
dotnet_diagnostic.IDE0025.severity = none

Чтобы отключить все правила стиля кода, задайте уровень серьезности для категории Style, чтобы none в файле конфигурации .

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

Дополнительные сведения см. в статье Подавление предупреждений анализа кода.

См. также