什么:= vb.net中的意思?

Sco*_*ott 14 vb.net colon-equals

我们有这个方法调用:

SendAck(AppData:=AppData, Status:=Status, StatusMessage:=StatusMessage, IsApplication:=IsApplication)
Run Code Online (Sandbox Code Playgroud)

以下是定义:

Private Sub SendAck(ByVal AppData As XDocument, ByVal Status As Boolean, ByVal StatusMessage As String, ByVal IsApplication As Boolean)
Run Code Online (Sandbox Code Playgroud)

为什么调用具有带":="的参数.我只是好奇.

Jar*_*Par 18

VB.Net中的":="用于按名称传递函数参数.默认是按位置.它允许以任何顺序调用参数,并根据名称匹配确定定位.

例如

Sub Example(ByVal param1 as Integer, ByVal param2 As Integer) 
  Console.WriteLine("{0} - {1}", param1, param2)
End Sub

Example(param2:=42, param1:=1) ' Prints "1 - 42"
Example(42, 1)                 ' Prints "42 - 1"
Run Code Online (Sandbox Code Playgroud)

  • @Scott,我最喜欢的原因是使布尔参数更具可读性。`GetFiles(true)` 的可读性比 `GetFiles(recurseIntoSubDirectories := true)` 低很多 (2认同)
  • 当存在带有大量可选参数的丑陋接口时,它也很有用,但您只想指定一个朝向列表末尾的接口.当有多个涉及基类的重载时,有时它可以帮助避免任何歧义; 在调用函数时命名参数可以删除它. (2认同)

And*_*ber 5

该语法使用命名参数; 在:=之后的值之前指定要设置的参数的名称.这样做可以使您跳过参数或以不同的顺序执行它们.