创建命名函数参数数组

时间:2011-04-21 21:00:30

标签: .net vb.net

是否可以使用基于名称的参数数组在VB.NET中创建例程?

框架内置的WebMethod attribute完全按照这种方式使用:

  WebMethod(BufferResponse:=False)

具体来说,我想在类的构造函数中使用它。我想要类似的东西:

  New MyObject(id:=10,buffer:=True)

我甚至不确定这种参数列表的术语是什么,所以在搜索时我甚至找不到它。

2 个答案:

答案 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而不是可选参数。