2013-02-28 18 views

回答

3

最簡單的方法是用你想要傳遞的參數填充List<object>,然後在調用你的可變參數方法之前調用ToArray()List<T>可以動態增長,讓您容納儘可能多的參數。下面是通過具有七個參數數組一個假設的例子:

var args = new List<object>(); 
args.Add(firstArg); 
args.Add(secondArg); 
for (int i = 0 ; i != 5 ; i++) { 
    args.Add(i); 
} 
MyMethodWithVarArgs(args.ToArray()); 
+1

@Tomas:你不知道,傳遞給方法的參數是由編譯器自動到一個數組結合起來呢?像MyMethodWithVarArgs(1,2,3,4,5,6)一樣調用像MyMethodWithVarArgs(新對象[] {1,2,3,4,5,6})''的方法只需少量工作。 – Will 2013-02-28 20:38:02

3

使用一個簡單的對象陣列...

例如,與該簽名的方法

public void DoSomething(params object[] args) 

可以是像這樣調用

object[] args = new object[] {"Hello", "World", 123}; 
DoSomething(args); 

可以在運行時輕鬆構建數組(例如,使用List)。

1

我可能會錯過一些東西,但是爲什麼不能直接使用所需的參數調用方法,具體取決於您提到的條件?你不需要把它們放到一個數組中(除非你已經將它們放在一個數組中,但是你只需傳遞數組......)。

例如,給定:

public static void Method(params object[] args) 
{ 
} 

你可以這樣做:

if (condition1) 
{ 
    Method(); 
} 
else if (condition2) 
{ 
    Method("arg"); 
} 
else 
{ 
    Method("arg1", "arg2"); 
}