VB.Net Property? or Method? - 屬性還是方法
在VB.net中,我們有屬性這一概念,通常的表達格式是:
1 Private _myProperty As String
2 Property myProperty() As String
3 Get
4 Return _myProperty
5 End Get
6 Set(ByVal value As String)
7 _myProperty = value
8 End Set
9 End Property
10
但是在特殊的情況下,我們可能需要一個屬性去設置多個值,這時候我們就會考慮到使用方法,傳遞多個參數。在VB.Net中就可以省略這個步驟,因為VB.Net屬性既是方法,我們可以混淆,如下定義:
1 Private _LastName As String
2 Private _FirstName As String
3 Private _FullName As String
4 Property Name(Optional ByVal FirstName As String = "", Optional ByVal LastName As String = "") As String
5 Get
6 Return _FullName + " (FirstName: " + _FirstName + " LastName: " + _LastName + ")"
7 End Get
8 Set(ByVal value As String)
9 _FirstName = FirstName
10 _LastName = LastName
11 _FullName = value
12 End Set
13 End Property
怎么去使用?簡單,既當方法調用,又當屬性賦值:
1 Dim obj As myCustomClass = New myCustomClass
2 obj.Name("Tom", "Smith") = "Jim John"
3 MessageBox.Show(obj.Name)
VB.Net在識別屬性時其實內部他將屬性的調用轉換成了方法,上面這段代碼實質上是對
obj.Name(byVal value As String, Optional ByVal FirstName As String = "", Optional ByVal LastName As String = "")
這樣我們就可以混淆實現既是方法又是屬性的功能。
WPF QQ交流群: 113404016 歡迎加入
浙公網安備 33010602011771號