【发布时间】:2013-02-04 06:50:50
【问题描述】:
我希望能够使用可变数量的参数(有时不带参数,有时带 11 个参数)对匿名方法进行内联调用。
Dictionary<string, Action> ActionDic = new Dictionary<string, Action>();
int i = 0;
ActionDic["something"] = () => { i += 1; }; // this line is ok
ActionDic["somethingArgs"] = (int n) => { n += 1; }; // but this is not
// Delegate 'System.Action' does not take 1 arguments
所以我不能让委托人接受这样的论点。我的语法是错误的,还是不可能?还是我必须更改我的字典应该使用的匿名方法的类型?
【问题讨论】:
-
好的,我改了标题,这样更清楚我想要什么。
-
无论
ActionDic是什么,它的字符串索引器都接受Action(或另一个没有返回类型的无参数委托)。如果是Action<T>,你可以像p => DoStuff(p)那样做。 -
@user1306322 请考虑阅读How To pass Optional Arguments。虽然它与匿名方法无关,但它可能会给你一些关于如何传递可变数量参数的线索
-
@KonstantinVasilcov 我熟悉将参数设为可选,但感谢您提供的链接。
标签: c# syntax delegates arguments