首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于var与委托的有关问题

2012-03-15 
关于var与委托的问题.2008中,类似的语句无法通过编译C# codevar d (string s, object o) {Console.Wr

关于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中,记得好像是默认当作匿名方法来处理。

热点排行