zoukankan      html  css  js  c++  java
  • C#类型的转换:Converter<TInput, TOutput> 委托的使用

    Converter<TInput, TOutput> 委托

    表示将对象从一种类型转换为另一种类型的方法。

    此委托由 Array 类的 ConvertAll<TInput, TOutput> 方法和 List<T> 类的 ConvertAll<TOutput> 方法使用,将集合中的每个元素从一种类型转换为另一种类型。https://msdn.microsoft.com/zh-cn/library/kt456a2y.aspx

    语法:

    public delegate TOutput Converter<in TInput, out TOutput>(TInput input)
    

    类型参数

    TInput:要转换的对象类型

    TOutput:要将输入对象转换的类型

     小实例:

    还不知道这个方法之前我将string[]转List<DateTime>是这么写的

    //将这样的字符串需要使用DateTime[]或List<DateTime>包装起来
    string dates="1992-1-1#2001-1-1#2003-2-2"
    string[] reqtimes= dates.Split(new string[]{"#"},StringSplitOptions.RemoveEmptyEntries);
    List<DateTime> times = new List<DateTime>();
    foreach (var item in reqtimes)
    {
    times.Add(Convert.ToDateTime(item));
    }
    

    现在可以这么写

     先看看ConvertAll方法

    //对于委托作为参数,那么写法就好多了
    //来复习一下委托写法
    
    //1.0 
    Array.ConvertAll(reqtimes, new Converter<string, DateTime>(ToDateTime));
    Array.ConvertAll(reqtimes,ToDateTime);
    //定义一个与委托相同签名的方法
    private DateTime ToDateTime(string str) { return Convert.ToDateTime(str); }
    
     //2.0 进化
    Array.ConvertAll(reqtimes, new Converter<string, DateTime>(c =>Convert.ToDateTime(c))); 
    
    //3.0 最终版 
    List<DateTime> list=Array.ConvertAll(reqtimes, c =>Convert.ToDateTime(c)).ToList();
    

      

  • 相关阅读:
    【并查集学习笔记】------迟来的总结
    【Ant Trip】题解
    【数星星 Stars】题解
    【From Hero to Zero】题解
    营救 【题解】
    js获取浏览器视窗尺寸
    js基础拖拽二
    js基础拖拽一
    js检测浏览器flash支持
    js操作cookie
  • 原文地址:https://www.cnblogs.com/Sunlimi/p/4365920.html
Copyright © 2011-2022 走看看