封装一个具有两个参数并返回 TResult 参数指定的类型值的方法。
语法
public delegate TResult Func<in T1, in T2, out TResult>( T1 arg1, T2 arg2 )
类型参数 in T1 此委托封装的方法的第一个参数类型。 该类型参数是逆变。即可以使用指定的类型或派生程度更低的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。 in T2 此委托封装的方法的第二个参数类型。 out TResult 此委托封装的方法的返回值类型。 该类型参数是协变。即可以使用指定的类型或派生程度更高的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。 参数 arg1类型:T1 此委托封装的方法的第一个参数。 arg2类型:T2 此委托封装的方法的第二个参数。 返回值 类型:TResult 此委托封装的方法的返回值。
备注
也就是说,封装的方法必须具有两个均通过值传递给它的参数,并且必须返回值。
若要引用具有两个参数并返回 void 的方法(或者要在 Visual Basic 中引用被声明为 Sub 而不是被声明为 Function 的方法),请改用泛型 Action<T1, T2> 委托。
ExtractWords 方法的引用分配给其委托实例。
示例
using System; using System.Collections.Generic; using System.Linq; public class Func3Example { public static void Main() { Func<String, int, bool> predicate = (str, index) => str.Length == index; String[] words = { "orange", "apple", "Article", "elephant", "star", "and" }; IEnumerable<String> aWords = words.Where(predicate).Select(str => str); foreach (String word in aWords) Console.WriteLine(word); } }