【问题标题】:Can I use a lambda expression with params keyword?我可以使用带有 params 关键字的 lambda 表达式吗?
【发布时间】:2010-09-20 00:35:09
【问题描述】:

假设我有以下代码:

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 表达式,我可以调整方法的输出。

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

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

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

我的问题是,有没有办法将 lambda 表达式与“params”可选属性一起使用?也许以某种方式将我的委托嵌入到数组中?

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

【问题讨论】:

    标签: c# lambda


    【解决方案1】:

    这行得通吗?

    编辑 抱歉,这是用一只眼睛做的,让我换个说法。

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

    【讨论】:

    • 我觉得应该是params MyDel[] lambdas
    【解决方案2】:

    是的,你可以。

        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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 2020-06-30
      • 2011-04-21
      • 2019-09-14
      • 1970-01-01
      相关资源
      最近更新 更多