什么:= VB中的意思?

had*_*ali 2 vb.net colon-equals

我一直在使用Visual Studio,我使用VB.现在我注意到text:=在编码时它给我的IntelliSense建议列表中调用了一些东西.我不确定它是什么.有谁可以向我解释一下?

Ste*_*art 6

它允许您在将参数传递给方法时指定特定参数的值.通常,参数由参数的顺序确定.例如,如果您有这样的方法:

Public Sub WriteStrings(s1 As String, s2 As String)
    Console.AppendLine(s1 & s2)
End Sub
Run Code Online (Sandbox Code Playgroud)

你通常会这样称呼它:

WriteStrings("A", "B")  ' Outputs "AB" 
Run Code Online (Sandbox Code Playgroud)

但是,您可以使用如下命名参数调用它:

WriteStrings(s1:="A", s2:="B")  ' Outputs "AB" 
Run Code Online (Sandbox Code Playgroud)

在该示例中,唯一真正的优点是,在查看代码时,显而易见的是,为每个参数传递了哪个参数.但是,它还允许以不同的顺序传递参数的有趣可能性.例如:

WriteStrings(s2:="A", s1:="B")  ' Outputs "BA" 
Run Code Online (Sandbox Code Playgroud)

但是,您最常见的地方是参数是可选的.例如,在调用此方法时:

Public Sub DisplayPerson(Optional includeName As Boolean = True, 
                         Optional includeAge As Boolean = False,
                         Optional includeAddress As Boolean = True)
Run Code Online (Sandbox Code Playgroud)

并且您希望保留前两个参数的默认设置并且只想强制includeAddress使用False,您可以像这样调用它:

DisplayPerson(, , False)
Run Code Online (Sandbox Code Playgroud)

但这有点令人困惑.许多人发现指定参数名称以使代码更易于阅读更容易混淆:

DisplayPerson(includeAddress:=False)
Run Code Online (Sandbox Code Playgroud)

由于设置属性属性的参数没有特定的顺序,因此在这里使用的命名参数也很常见:

<DataContract(Name:="Test")>
Run Code Online (Sandbox Code Playgroud)