可能会写出如下内容:
function foo(a,b,c) {
return a + b + c;
}
var args = [2,4,6];
var output = foo.apply(this, args); // 12
C#相当于.apply
的javascript?
答案 0 :(得分:13)
您可以使用params关键字:
object foo(params int[] args) { ... }
然后你可以这样调用这个方法:
var output = foo(2, 4, 6);
或者像这样:
var args = new [] {2, 4, 6};
var output = foo(args)
答案 1 :(得分:4)
object[] args = new object[] { 2, 4, 6 };
this.GetType().GetMethod("foo").Invoke(this, args);
答案 2 :(得分:2)
我已经有一段时间了,因为我已经完成了任何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( );