GET SET属性的目的是什么,只是声明它是正常的?

时间:2012-05-23 05:07:01

标签: vb.net

我一直想知道以下两点之间的区别是什么:

Public Property ProgressMaxValue() As Integer
    Get
        Return maxval
    End Get
    Set(ByVal Value As Integer)
        maxval = Value
    End Set
End Property

VS

Dim progressMaxValue as Integer
ProgressMaxValue = 1184

做同样的事情对吗?我检查了其他人的代码,并且看到了越来越多的第一个例子。只是想弄清楚点,差异,以及为什么人们使用它大声笑。也许我错过了备忘录?

2 个答案:

答案 0 :(得分:1)

您正在为第一个代码创建Property。只要它已被实例化,这也允许您在其他类中公开它。第二个只是类中的可用变量,甚至只是过程中的范围。两者之间存在差异。您还可以在您的房产中添加计算。

答案 1 :(得分:1)

  

宣布它正常......

在这种情况下没有“正常”。这两个陈述实际上是完全不同的东西,一直到IL,即属性和字段。当您通过读取或赋值使用属性的getter或setter时,实际上是在调用方法。

在您的特定示例中,属性的getter / setter方法读取并更新字段,但由于它们是方法,因此它们可以执行您希望它们执行的任何操作。

至于为什么,这已被广泛讨论,例如herehere(c#文章,但在这种情况下可与VB.Net互换)。使用属性的一个广泛(但很好)的理由是它从外部调用者隐藏了类的内部。