2017-06-20 55 views
1

我的一個特性是這樣的:表達身體

public string Name 
{ 
get{ return _name; } 
set { _name = value; } 
} 

但ReSharper的勸告我將其改爲:

public string Name 
{ 
get => _name; 
set => _name = value; 
} 

如果我重構一樣,然後編譯拋出錯誤 是在一個屬性中不可能有表達式體?

+0

Waht錯誤你得到了嗎? –

+0

C#7? https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7#more-expression-bodied-members –

+0

顯然有一個版本mismatch。此功能僅適用於c#7 – Fabiano

回答

2

在c#6之前,你不能在屬性中使用表達式體,而必須寫這樣的東西。

public string FullName 
{ 
    get { return string.Format("{0} {1}", FirstName, LastName); } 
} 

在c#6中,您可以創建只讀擴展主體。

public string FullName => $"{FirstName} {LastName}"; 

在c#7中,您獲得了像您展示的成員的表達式主體。

public string Name 
{ 
    get => _name; 
    set => _name = value; 
} 
0

如果你想ReSharper的不適應這種行爲,你可以改變它:

ReSharper的>選項>代碼編輯> C#>代碼樣式

並更改以下屬性:

Code body>屬性,索引器和事件從Expression bodyAccessors with block body

如果您只是想禁用建議,請更改上述屬性的通知狀態。