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

财产 价值
规则 ID IDE0025
标题 使用属性的表达式主体
类别 样式
子类别 语言规则(表达式主体成员)
适用的语言 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

有关详细信息,请参阅 如何取消代码分析警告

另请参阅