将方法参数转换为数组
是否有可以将方法参数转换为数组的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
只是好奇真的。
没有办法做到这一点。该语言本身不允许。您可以使用反射来获取执行的当前执行方法StackFrame
。但即使如此,it’s still impossible来检索参数值。
唯一的解决方案是通过在方法调用中引入点削减来“修补”应用程序。相关答案提到了这种可能性。
看看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
不,我不希望向方法发送未指定数量的参数。 – burntsugar 2011-04-17 16:26:15
请注意,如果您愿意,可以从上面删除泛型并将其全部更改为Object。只是给你一些关于重载的选项。 – Smudge202 2011-04-19 11:32:36
你究竟想达到什么目的?对于我来说,没有足够的细节可以说明。将它们转换为数组意味着什么? – 2011-04-17 15:44:15
看看@ http://*.com/questions/3288597/is-there-a-way-to-get-an-array-of-the-arguments-passed-to-a-method – 2011-04-17 16:14:13