2011-05-21 37 views
3

在VB.NET,有什麼用Property關鍵字,而不是優點:VB.NET中的Property關鍵字與使用getter和setters的Private字段相比有什麼優勢?

Private MyProperty as String 
Public Sub setP(ByVal s as String) 
    MyProperty = s 
End Function 
Public Function getP() as String 
    return MyProperty 
End Function 

從Java來的時候傾向於使用這種風格,而不是Property...End Property - 沒有任何理由不?

+0

是的,有*每*理由不。屬性是慣用的.NET結構。不要在VB.NET(或C#)中編寫Java代碼。如果您想編寫Java代碼,請使用Java編寫代碼。 – 2011-05-21 11:41:37

回答

9

你正在做編譯器的工作。屬性關鍵字的優點:

  • 你不能小心將getter和setter屬性類型,一個真正的問題在VB
  • 無需尷尬得到設置前綴,編譯器找出你想要哪一個
  • 數據綁定需要一個屬性
  • 你可以利用自動屬性的語法,不需要聲明私有字段和只有一行代碼。

相同的聲明在VS2010使用自動屬性語法:

Public Property P As String 

編譯器自動生成的獲取和設置方法和私營支持字段。必要時重構訪問器。

+0

這就是我之後,謝謝 – Flash 2011-05-23 10:41:29

+0

嗨漢斯。這只是切線相關的,但是在任何情況下,人們想要產生一種私人的「私人財產」而不僅僅是私人領域嗎?即是否有任何情況下,您會使用「私人財產無論作爲什麼」或甚至「私人財產......」* *具有明確的獲取者和設置者?謝謝你的幫助。 – 2013-05-16 18:00:32

2

功能上沒有區別,但對我來說,屬性的使用是一個更清潔的實現。看看here

.net 4也給VB.net自動實現projerties here其他私人支持變量是由編譯器自動創建,導致更清潔的代碼和更少的鍋爐代碼編寫。

4

您將從使用getters和setter時不會獲得的屬性中獲得一些額外的好處。

像反射一樣可以很容易地找到你的所有屬性,因爲有方法。

例如,ORM很容易找到你的屬性,但是它們很難找到getter設置器,因爲約定是使用屬性。

所以在功能上它們可能是相同的,但慣例是使用屬性。

+0

好點。另外,如果使用XAML,綁定變得更容易使用屬性。 – 2011-05-21 09:50:26

2

使用屬性使Visual Studio編輯器能夠在屬性網格中顯示/編輯它。如果你正在創建一個控件或dll,其他人將使用它們,它們被用來改變屬性網格中的設計時屬性。

如果您將控件添加到窗體,然後將網格的SelectedObject屬性設置爲您的類/控件的實例,那麼property-grid-control也可以選擇該控件。

相關問題