【发布时间】:2010-10-20 10:33:54
【问题描述】:
所以当我写这样的东西时
Action action = new Action(()=>_myMessage = "hello");
重构专业版!将其突出显示为冗余委托创建,并允许我将其缩短为
Action action = () => _myMessage="hello";
这通常效果很好。 通常,但并非总是如此。例如,Rhino Mocks 有一个名为 Do 的扩展方法:
IMethodOptions<T> Do(Delegate action);
在这里,传递第一个版本有效,但第二个无效。这里到底发生了什么?
【问题讨论】:
-
您的第二个代码块无法编译。我收到此消息“无法将 lambda 表达式分配给隐式类型的局部变量”。但是,如果我将“var”替换为“Action”就可以了。
-
是的,你是对的,它不能分配给隐式类型的变量,我会编辑它。
标签: c# .net-3.5 delegates lambda