如何声明和使用 Func<T1, T2, TResult> 委托

 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);
   }
}


转载于:https://www.cnblogs.com/dudu837/archive/2010/11/12/1875568.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值