Yol*_*ola 2 c# lambda delegates
假设我有这个代表的声明:
private delegate UInt32 Feedback(UInt32 value);
Run Code Online (Sandbox Code Playgroud)
在这里我尝试将它与lambda表达式一起使用
feedback = (Feedback)Delegate.Combine(feedback,
value => { Console.WriteLine("Lambda item = " + value); return 0; });
Run Code Online (Sandbox Code Playgroud)
但我得到错误:无法将lambda表达式转换为类型'System.Delegate',因为它不是委托类型
但它以这种方式工作
feedback = (Feedback)Delegate.Combine(feedback,
new Func<UInt32, UInt32>(value => { Console.WriteLine("Lambda item = " + value); return 0; }));
Run Code Online (Sandbox Code Playgroud)
我以为C#编译器必须自己做.
feedback = (Feedback)Delegate.Combine(feedback,
(Feedback)(value => { Console.WriteLine("Lambda item = " + value); return 0; }));
Run Code Online (Sandbox Code Playgroud)
您必须明确说出lambda函数的类型,否则编译器不知道它具有什么类型.例如,请参阅http://blogs.msdn.com/b/jaredpar/archive/2007/12/14/c-lambda-type-inference.aspx
C#类型推断的一个限制是您不能使用它来推断lambda表达式的类型.例如,以下代码将无法编译
var f = () => 4;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
223 次 |
最近记录: |