2011-04-17 110 views
0

是否有可以將方法參數轉換爲數組的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 

只是好奇真的。

+0

你究竟想達到什麼目的?對於我來說,沒有足夠的細節可以說明。將它們轉換爲數組意味着什麼? – 2011-04-17 15:44:15

+0

看看@ http://stackoverflow.com/questions/3288597/is-there-a-way-to-get-an-array-of-the-arguments-passed-to-a-method – 2011-04-17 16:14:13

回答

3

沒有辦法做到這一點。該語言本身不允許。您可以使用反射來獲取執行的當前執行方法StackFrame。但即使如此,it’s still impossible來檢索參數值。

唯一的解決方案是通過在方法調用中引入點削減來「修補」應用程序。相關答案提到了這種可能性。

3

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

不,我不希望向方法發送未指定數量的參數。 – burntsugar 2011-04-17 16:26:15

+0

請注意,如果您願意,可以從上面刪除泛型並將其全部更改爲Object。只是給你一些關於重載的選項。 – Smudge202 2011-04-19 11:32:36