プロパティに式本体を使用する (IDE0025)

プロパティ
ルール ID IDE0025
Title プロパティに式本体を使用する
カテゴリ スタイル
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 はプロパティのアクセサー部分を特に考慮します。

何の計算もせずに値を返すだけの読み取り専用プロパティについては、IDE0025csharp_style_expression_bodied_properties = false に設定されているが、IDE0027csharp_style_expression_bodied_accessors = true に設定されている場合、次のようなプロパティが与えられます。

public int TemperatureF
{
    get => _temp;
}

しかしながら、IDE0025csharp_style_expression_bodied_properties = true に設定する場合、(IDE0027csharp_style_expression_bodied_accessors = false に設定する場合でも) プロパティがさらに簡素になります。

public int TemperatureF => _temp;

読み取り専用プロパティの場合、(複数の行で構成されるため) プロパティは式形式で記述できないため、違いが少しだけ明らかになります。 そのため、IDE0025csharp_style_expression_bodied_properties = true に設定される場合でも、中括弧、つまり、ブロック本体になります。

次の例からは、2 つのプロパティのさまざまな組み合わせでプロパティの外観が変わる様子がわかります。

// 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

詳細については、「コード分析の警告を抑制する方法」を参照してください。

関連項目