針對屬性使用表示式主體 (IDE0025)
財產 | 價值 |
---|---|
規則標識碼 | IDE0025 |
標題 | 針對屬性使用表達式主體 |
類別 | 風格 |
子類別 | 語言規則(運算式主體成員) |
適用的語言 | C# |
選項 | csharp_style_expression_bodied_properties |
概述
此樣式規則涉及使用 表達式主體, 與屬性的區塊主體。
選項
設定此規則的關聯選項值,以指定是否偏好屬性的表達式主體或區塊主體,若偏好表達式主體,則是否僅針對單行表達式。
csharp_style_expression_bodied_properties
財產 | 價值 | 描述 |
---|---|---|
選項名稱 | csharp_樣式表達式-形式屬性 | |
選項值 | 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
如需詳細資訊,請參閱 如何在隱藏程式代碼分析警告。