使用属性的表达式主体 (IDE0025)

属性
规则 ID IDE0025
标题 使用属性的表达式主体
类别 Style
Subcategory 语言规则(表达式主体成员)
适用的语言 C#
选项 csharp_style_expression_bodied_properties

概述

此样式规则涉及使用属性的表达式主体,而不是块主体。

选项

设置此规则的关联选项的值以指定是首选属性的表达式主体还是块体,以及如果首选表达式主体,是否仅针对单行表达式的情况。

若要详细了解如何配置选项,请参阅选项格式

csharp_style_expression_bodied_properties

属性 说明
选项名称 csharp_style_expression_bodied_properties
选项值 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 = falseIDE0027 设置为 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

有关详细信息,请参阅如何禁止显示代码分析警告

另请参阅