假设我有以下代码:
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) {
答案 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