有可能寫這樣的:動態參數定義
function foo(a,b,c) {
return a + b + c;
}
var args = [2,4,6];
var output = foo.apply(this, args); // 12
C#有一個相當於爲JavaScript的.apply
?
有可能寫這樣的:動態參數定義
function foo(a,b,c) {
return a + b + c;
}
var args = [2,4,6];
var output = foo.apply(this, args); // 12
C#有一個相當於爲JavaScript的.apply
?
可以使用params關鍵字:
object foo(params int[] args) { ... }
然後,您可以調用的方法是這樣的:
var output = foo(2, 4, 6);
或像這樣:
var args = new [] {2, 4, 6};
var output = foo(args)
它已經因爲同時我做了任何JavaScript,但我明白,apply
方法是一種創建委託的方法。在C#中有很多方法可以做到這一點。我會是這樣開始:
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo();
Func<int[], int> SumArgs = foo.AddArgs; // creates the delegate instance
// get some values
int[] nums = new[] { 4, 5, 6 };
var result = SumArgs(nums); // invokes the delegate
Console.WriteLine("result = {0}", result1);
Console.ReadKey();
}
}
internal class Foo
{
internal int AddArgs(params int[] args)
{
int sum = 0;
foreach (int arg in args)
{
sum += arg;
}
return sum;
}
}
有使用LINQ另一種方式,而不是foreach
,你可以使用:
return args.Sum();
object[] args = new object[] { 2, 4, 6 };
this.GetType().GetMethod("foo").Invoke(this, args);
您是否正在尋找一種設置特定函數的方式,以便您可以將數組作爲參數傳遞?或者你正在尋找一種以數組爲參數調用任意函數的方法? –
刪除了稱呼:「提前致謝」,下次不要這樣做:) –