2017-08-10 21 views
4

我注意到Visual Studio 2017中的每個屬性都有一個快速操作,建議用一種方法替換它。爲什麼VS 2017建議用一種方法替換一個屬性?

enter image description here

是意味着性能不是來設置和獲取價值領域推薦的方式,就微軟打算棄用它在未來?

或者使用方法而不是使用屬性來實現此目的可以獲得什麼收益?

+0

屬性本身實際上是幕後的方法,它只是簡單的語法,因爲中間語言只理解方法,它不知道屬性如何看起來像 –

+1

它是_suggestion_還是隻是一個可能的重構? – Lukazoid

+0

@EhsanSajjad - 這只是實施細節。語義上兩者都不同。屬性表示數據,方法表示動作。一個非常粗略的例子可能是一個表示「TaxCalculater」的類,其中一個屬性可以是Principal,動作可以是Calculate。您始終可以擁有GetPrincipalAmount或SetPrincipalAmount,但它在語義上沒有意義。而「計算」可能具有過載或更多參數,例如'計算(bool IsCompoundInterest)'所以爲它創建一個方法更有意義。 –

回答

10

這不是從Visual Studio的建議,這是一個Quick Action

快速操作,讓你輕鬆重構,產生或以其他方式與一個動作修改代碼。

的Visual Studio爲您提供了一個選項一個屬性轉換爲對方法和私有變量代碼重構的一部分,你應該想爲各種各樣的原因這樣做。

例如,您可能會意識到getter應該接收一個額外的參數,或者setter應該在其他類型上有重載。在這些情況下,將需要一個方法來代替屬性,因此Visual Studio爲您提供了一種方法,只需點擊幾下即可完成。

對於沒有任何行爲的存儲屬性(例如類中的OfferPeriod屬性),轉換爲一對方法不會比自動屬性提供任何優勢。

相關問題