我可以使用带有params关键字的lambda表达式吗?

时间:2010-09-19 16:23:42

标签: c# lambda

假设我有以下代码:

delegate int MyDel (int n);   // my delegate

static int myMethod( MyDel lambda, int n) { 
    n *= n;
    n = lambda(n);
    return n;      // returns modified n
}

这样,有了不同的lambda表达式,我可以调整Method的输出。

myMethod ( x => x + 1, 5);
myMethod ( x => x - 1, 5);

现在,如果我不想在lambda表达式中做任何aritmethic,我可以使用:

myMethod ( x => x, 5);  // and lambda will simply return x

我的问题是,有没有办法使用lambda expresion和'params'可选属性?也许以某种方式将我的委托嵌入数组中?

 static int myMethod (int n, params MyDel lambda) { 

2 个答案:

答案 0 :(得分:3)

这有用吗?

EDIT 对不起,这是用一只眼睛做的,让我重新说一下。

static int myMethod (int n, params  MyDel[] lambdas) {

答案 1 :(得分:1)

是的,你可以。

    delegate int MyDelegate(int n);
    static void MyMethod(int n, params MyDelegate[] handlers)
    {
        for (int i = 0; i < handlers.Length; i++)
        {
            if (handlers[i] == null)
                throw new ArgumentNullException("handlers");
            Console.WriteLine(handlers[i](n));
        }
    }

    static void Main(string[] args)
    {
        MyMethod(1, x => x, x => x + 1);
        Console.Read();
    }

输出:

1

2