关于var与委托的问题.
2008中,类似的语句无法通过编译
C# code
var d = (string s, object o) => {Console.WriteLine(s, o);};
错误是:Cannot assign lambda expression to an implicitly-typed local variable
在不显式的声明Delegate的情况下,如果实现?
------解决方案--------------------例子:
Func<string, string> e = (x) => string.Format("lamda 表达式被执行: [{0}]!", x);
Console.WriteLine(e("@@@@"));
System.Linq.Expressions.Expression<Func<string, string>> f = (x) => string.Format("lamda 表达式被执行: [{0}]!", x);
Console.WriteLine("lamda表达式中共有{0}个参数。", f.Parameters.Count);
var g = f.Compile();
Console.WriteLine(g("这是编译后的结果。"));
------解决方案--------------------这是C# 3.0的语法,上次还和装配脑袋讨论来着。
我觉得是微软搞不清你到底想把这个Lambda表达式当作匿名方法(委托)来处理还是当作Expression来处理,尽管可以通过Lambda表达式推断出匿名方法的类型。
在VB中,记得好像是默认当作匿名方法来处理。