在C#中,属性的setter value关键字将自动与属性的类型相同.
例如,在C#中,类型value为string
private string str = string.Empty;
public string MyText
{
get { return str; }
set { str = value; }
}
Run Code Online (Sandbox Code Playgroud)
如果我们将此代码段转换为VB.Net,我们就会得到
Private str As String = String.Empty
Public Property MyText() As String
Get
Return str
End Get
Set(ByVal value As String)
str = value
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
问题
为什么set有这条线Set(ByVal value As String)?不应该自动将值类型设置为String.这条路.
Private str As String = String.Empty
Public Property MyText() As String
Get
Return str
End Get
Set
str = value
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
有什么用?
我不能改变BYVal到ByRef(我试过,提示错误),那有什么用之谓也?
您可以省略该(ByVal value As String)部分.Visual Studio将继续添加它,但语言和编译器都不需要它.
您可以使用除以外的参数名称value.另请注意,自VS2010 SP1起,您可以省略ByVal关键字.
例:
Class Test
Private str As String = String.Empty
Public Property MyText() As String
Get
Return str
End Get
Set
str = value
End Set
End Property
Public Property MyText2() As String
Get
Return str
End Get
Set(something As String)
str = something
End Set
End Property
End Class
Run Code Online (Sandbox Code Playgroud)