比如说
s => Console.WriteLine(s)
它是一个匿名函数,意思是有一个输入参数s,函数体有一个 Console.WriteLine(s) 的动作。这是.Net 3.5中新加入的一种语法。s的type是由在他更上一层的IEnumerable<> 来决定的,这叫什么type的智能推断intelligent refer,比如这个例子
(string[] {"to","mt"}).Select(s=> s.substring(0,2))
你并没有指定输入参数 s 的type,但是.net 3.5智能的推断出s的type只能是string型的,因为s来源于一个string[]数组
在.Net 2.0中写出一个和它相同功能的匿名函数是这个样子
delegate(string s) { rConsole.WriteLine(s); }
举个小例子
Enumerable.Repeat("tree", 10).Select(s => s.Substring(0, 2));
如果用.net 2.0的匿名函数来写,是这个样子
Enumerable.Repeat("tree", 10).Select( delegate(string s) { return s.Substring(0, 2); } );
s => Console.WriteLine(s)
它是一个匿名函数,意思是有一个输入参数s,函数体有一个 Console.WriteLine(s) 的动作。这是.Net 3.5中新加入的一种语法。s的type是由在他更上一层的IEnumerable<> 来决定的,这叫什么type的智能推断intelligent refer,比如这个例子
(string[] {"to","mt"}).Select(s=> s.substring(0,2))
你并没有指定输入参数 s 的type,但是.net 3.5智能的推断出s的type只能是string型的,因为s来源于一个string[]数组
在.Net 2.0中写出一个和它相同功能的匿名函数是这个样子
delegate(string s) { rConsole.WriteLine(s); }
举个小例子
Enumerable.Repeat("tree", 10).Select(s => s.Substring(0, 2));
如果用.net 2.0的匿名函数来写,是这个样子
Enumerable.Repeat("tree", 10).Select( delegate(string s) { return s.Substring(0, 2); } );