2011-05-21 43 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也可以选择该控件。

相关问题