是否可以使用基于名称的参数数组在VB.NET中创建例程?
框架内置的WebMethod attribute完全按照这种方式使用:
WebMethod(BufferResponse:=False)
具体来说,我想在类的构造函数中使用它。我想要类似的东西:
New MyObject(id:=10,buffer:=True)
我甚至不确定这种参数列表的术语是什么,所以在搜索时我甚至找不到它。
答案 0 :(得分:2)
您是尝试从头开始创建对象还是已经存在类定义?如果该类存在,您可以在构造函数中使用带有默认参数的命名参数:
Public Class TestClass
Public Property A As Integer
Public Property B As Integer
Public Sub New(Optional ByVal a As Integer = -1, Optional ByVal b As Integer = -1)
Me.A = a
Me.B = b
End Sub
End Class
Dim Obj As New TestClass(b:=2)
还有对象初始化:
Dim Obj As New TestClass() With {.A = 2}
或者您是否尝试创建Javascript / JSON中的通用对象?像:
var obj = new Object();
obj.MyProp = 27;
VB
不存在这种语法答案 1 :(得分:0)
您无需在MyObject
的定义中执行任何特殊操作。假设构造函数具有名为New MyObject(id:=10,buffer:=True)
和id
的参数,请直接前进并输入buffer
。这意味着您可以按任何顺序键入参数,您不必使用声明中的顺序。 See the VB manual
就我个人而言,我认为这个命名参数样式有点老式,它会让其他开发人员难以阅读你的代码,除非他们像我一样老,记住VB6。这种风格在VB6中很常见,带有可选参数,但是VB.Net重载的恕我直言(并且根据微软)是usually more elegant而不是可选参数。