【问题标题】:Convert method parameters into array将方法参数转换为数组
【发布时间】:2011-08-07 08:35:54
【问题描述】:

是否有Visual Basic.NET 方法可以将方法参数转换为数组?

例如,而不是:

Function functionName(param1 as object, param2 as object) as object
ArrayName = {param1, param2}

你可以这样做:

Function functionName(param1 as object, param2 as object) as object
ArrayName = MethodThatGetsAllFunctionParams

真的很好奇。

【问题讨论】:

标签: vb.net


【解决方案1】:

看看 ParamArrays。我认为这可以解决您的要求?

http://msdn.microsoft.com/en-us/library/538f81ec%28v=VS.100%29.aspx

编辑:

您可以使用当前的函数签名初始化自定义集合

Public Class CustomCollection(Of T)
    Inherits System.Collections.Generic.List(Of T)

    Sub New(param1 As T, param2 As T)
        MyBase.New()
        MyBase.Add(param1)
        MyBase.Add(param2)
    End Sub
End Class

然后使用

调用函数
Dim result = functionName(New CustomCollection(Of Object)(param1, param2))

函数签名将更改为:

Public Function functionName(ByVal args As CustomCollection(Of Object)) As String

【讨论】:

  • 不,我不想向方法发送未指定数量的参数。
  • 注意,如果您愿意,可以从上面删除泛型并将其全部更改为 Object。只是给你一些关于重载的选项。
【解决方案2】:

没有办法做到这一点。语言本身不允许这样做。可以使用反射来获取执行的StackFrame的当前执行方法。但即便如此it’s still impossible 也可以检索参数值。

唯一的解决方案是通过在方法调用中引入切入点来“修补”应用程序。链接的答案提到了这种可能性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2015-05-22
    相关资源
    最近更新 更多