in T1
-
此委托封装的方法的第一个参数类型。
该类型参数是逆变的。即可以使用指定的类型或派生程度更低的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。
- in T2
-
此委托封装的方法的第二个参数类型。
- in T3
-
此委托封装的方法的第三个参数类型。
- out TResult
-
此委托封装的方法的返回值类型。
该类型参数是协变的。即可以使用指定的类型或派生程度更高的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。
参数
- arg1
- 类型:T1
此委托封装的方法的第一个参数。
- arg2
- 类型:T2
此委托封装的方法的第二个参数。
- arg3
- 类型:T3
此委托封装的方法的第三个参数。
返回值
类型:TResult此委托封装的方法的返回值。
备注
可以使用此委托表示一种能以参数形式传递的方法,而不用显式声明自定义委托。 封装的方法必须与此委托定义的方法签名相对应。 也就是说,封装的方法必须具有三个均通过值传递给它的参数,并且必须返回值
此示例声明一个 Func<T1, T2, TResult> 变量,并将其分配给一个采用 String 值和 Int32 值作为参数的 lambda 表达式。 如果 String 参数的长度等于 Int32 参数的值,则此 lambda 表达式将返回 true。 随后在查询中使用封装此方法的委托来筛选字符串数组中的字符串。
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); } }
。