1

我一直想知道以下两者之间有什么区别:

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

对比

Dim progressMaxValue as Integer
ProgressMaxValue = 1184

做同样的事情对吗?我检查了其他人的代码,并且看到越来越多的第一个示例。只是想弄清楚重点,区别以及人们使用它的原因,哈哈。也许我错过了备忘录?

4

2 回答 2

1

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

于 2012-05-23T05:10:52.893 回答
1

只是宣布它是正常的......

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

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

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

于 2012-05-23T05:11:50.290 回答