Lambda表达式(如何定义扩展函数?)

Dee*_*Nag 2 c# lambda extension-methods

var numbers=new int[]{1,2,3};
var numbers1=numbers.Select(n=>n);
var numbers2=numbers.Select(n=>n.ToString());
var numbers3=numbers.Select(n=>new {Number=n, Even=n%2==0});
Run Code Online (Sandbox Code Playgroud)

扩展函数SELECT的输出怎么可能是任何类型的?

Fem*_*ref 5

它是使用以下签名定义的通用扩展方法:

public static IEnumerable<Tresult> Select<TSource, TResult>(
                this IEnumerable<TSource> source, 
                Func<TSource, TResult> selector);
Run Code Online (Sandbox Code Playgroud)

通过source和selector参数中存在的类型信息,编译器可以推断出使用的类型,因此您无需为其明确命名.