2010-10-29 266 views
12

我们有这样的方法调用:什么意思?=在vb.net中的意思?

SendAck(AppData:=AppData, Status:=Status, StatusMessage:=StatusMessage, IsApplication:=IsApplication) 

这里的定义是:

Private Sub SendAck(ByVal AppData As XDocument, ByVal Status As Boolean, ByVal StatusMessage As String, ByVal IsApplication As Boolean) 

为什么调用具有与参数 “:=”。我只是好奇。

回答

14

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" 
+0

Gotcha。出于好奇,你想什么时候这样做?如果你这样做,跳过某些参数,为什么你不让它们可选? – Scott 2010-10-29 20:16:21

+1

@Scott,我最喜欢的原因是使布尔参数更具可读性。 'GetFiles(true)'比'GetFiles(recurseIntoSubDirectories:= true)'可读性好得多' – JaredPar 2010-10-29 20:17:44

+0

非常有趣......谢谢! – Scott 2010-10-29 20:18:34

5

即语法使用命名参数;指定在:=之前设置的参数的名称,然后是后面的值。这样做可以使您跳过参数或按不同的顺序执行它们。