C#函数委托类型

rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C04%5Cclip_filelist.xml">

C#函数委托类型


rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C06%5Cclip_filelist.xml">

1.       行为函数(Action<T>

这种委托的特征是void xxx(T obj),既返回类型void,接受一个T类型的参数。其目的是采取基于输入的行为。这种行为可能是修改参数的内容,甚至是与其他对象的相互作用

  1.     /// <summary>
  2.     /// 行为集合,行为函数(Action<T>)  委托特征void xxx(T obj)
  3.     /// </summary>
  4.     /// <typeparam name="T"></typeparam>
  5.     public class ActionCollection<T> : Collection<T>
  6.     {
  7.         private Action<T> action;

  8.         public ActionCollection(Action<T> action)
  9.         {
  10.             this.action = action;
  11.         }

  12.         protected override void InsertItem(int index, T item)
  13.         {
  14.             action(item);
  15.             base.InsertItem(index, item);
  16.         }
  17.     }

  1.         static void Main(string[] args)
  2.         {
  3.             ActionCollection<string> ac = new ActionCollection<string>(delegate(string s) { Console.WriteLine(s); });
  4.             ac.Add("Hello Word!");
  5.             Console.ReadLine();
  6.         }
在控制台输出结果为 : Hello Word!

rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C08%5Cclip_filelist.xml"> 可以采用类似的技术触发一个基于列表修改的数据库插入和删除操作,在元素被插入之前修改元素的状态。


rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C09%5Cclip_filelist.xml">

2.     转换函数(Converter<Tinput,TOutput>

转换器是以TOutput xxx(TInput from)为签名的委托,其目的是将TInput类型的对象转换成TOutput类型的对象.当然也可以通过将Converter<TInput,TOutput>传递给它所要应用的操作来对不可变的对象进行一般转换.TInputTOutput可以是相同类型.

  1.     /// <summary>
  2.     /// 基于转换器的集合,转换函数(Converter< TInput,TOutput>)
  3.     /// </summary>
  4.     /// <typeparam name="T"></typeparam>
  5.     public class ConverterCollection<T> : Collection<T>
  6.     {
  7.         private Converter<T, T> convert;
  8.         public ConverterCollection(Converter<T, T> convert)
  9.         {
  10.             this.convert = convert;
  11.         }
  12.         protected override void InsertItem(int index, T item)
  13.         {
  14.             item=convert(item);
  15.             base.InsertItem(index, item);
  16.         }
  17. }

Main函数调用
  1.         static void Main(string[] args)
  2.         {
  3.            ConverterCollection<string> cc = new ConverterCollection<string>(delegate(string s) { return s.ToUpper(); });
  4.             cc.Add("Hello Word");
  5.             foreach (string s in cc)
  6.             {
  7.                 Console.WriteLine(s);
  8.             }
  9.             Console.ReadLine();
  10.         }
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C12%5Cclip_filelist.xml"> 在控制台输出结果为

HELLO WORD


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值