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

  

C#类型的转换:Converter<TInput, TOutput> 委托的使用的更多相关文章

  1. spring类型自动转换——@InitBinder和Converter

    spring有2种类型转换器,一种是propertyEditor,一种是Converter.虽然都是类型转换,但是还是有细微差别. 所以这里以一个例子的形式来分析一下这2种类型转换的使用场景和差别. ...

  2. Array.ConvertAll<TInput, TOutput> 数组相互转化方法

    有个需求,把char数组转换为int数组,然后噼里啪啦就弄了这样一堆代码: public static int[] CharArrToIntArr(char[] charArr) { int[] in ...

  3. SpringMVC对日期类型的转换

    在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置. 1.如果查询类使我们自己写,那么在属性前面加上@Date ...

  4. C#高级编程 (第六版) 学习 第六章:运算符和类型强制转换

    第六章 运算符和类型强制转换 1,运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ ...

  5. XAML实例教程系列 - 类型转换器(Type Converter)七

    XAML实例教程系列 - 类型转换器(Type Converter) 分类: Windows 8 Silverlight2012-06-25 13:40 961人阅读 评论(0) 收藏 举报 butt ...

  6. 【读书笔记】C#高级编程 第七章 运算符和类型强制转换

    (一)运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ -- 移位运算符 < ...

  7. C#高级编程笔记 2016年10月8日运算符和类型强制转换

    1.checked和unchecked 运算符 C#提供了checked 和uncheckde 运算符.如果把一个代码块标记为checked, CLR就会执行溢出检查,如果发生溢出,就抛出overfl ...

  8. [改善Java代码]避开基本类型数组转换列表陷阱

    开发中经常用到Arrays和Collections这两个工具类. 在数组和列表之间进行切换.非常方便.但是也会遇到一些问题. 看代码: import java.util.Arrays; import ...

  9. [改善Java代码]不要让类型默默转换

    建议23:不要让类型默默转换 public class Client { // 光速是30万公里/秒,常量 public static final int LIGHT_SPEED = 30 * 100 ...

随机推荐

  1. Linux下搭建Lotus Domino集群

    Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...

  2. 理解python先编译后解释的特点

    1. CPython默认的标准解释器编译器.JPython支持Java集成,可以生成Java字节码并在JVM中解释执行.IronPython支持.NET集成. 2. 下次运行程序时,python自动检 ...

  3. 七、TCP/IP协议

    1.定义: TCP/IP模型也被称作DoD模型(Department of Defense Model).TCP/IP字面上代表了两个协议:TCP(传输控制协议)和IP(网际协议). TCP/IP协议 ...

  4. about control %CPU

    #include <stdio.h> #include <unistd.h> #include <stdlib.h> #define timesize 200000 ...

  5. SpringMVC使用静态资源

    1.Servlet配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&quo ...

  6. .NET使用ICSharpCode.SharpZipLib压缩/解压文件

    SharpZipLib是国外开源加压解压库,可以方便的对文件进行加压/解压 1.下载ICSharpCode.SharpZipLib.dll,并复制到bin目录下 http://www.icsharpc ...

  7. 比特币钱包应用breadwallet源码

    breadwallet是一款安全.可靠和便捷的比特币钱包,可使用户免于恶意软件和其他应用中常见的安全问题的骚扰,充分利用了iOS提供的安全功能,包括AES硬件加密.app沙盒和数据保护.代码签名以及k ...

  8. C# 集合 — Hashtable 线程安全

    基础知识重要吗?真的很重要. 就在笔者与同事聊天中突然同事提出一个问题,让笔都有点乱了手脚(有点夸张),题目是这样的: 问:Hashtable 是线程安全的吗? 答:…… (沉默中,Yes Or No ...

  9. Oracle一些常用的查询命令总结(持续更新)

    更新于:2015年1月28日 17:08:13 -------------------------表空间 --------------------------------------- ----- 查 ...

  10. HTML中Meta属性http-equiv="X-UA-Compatible"详解

    HTML下head中的http-equiv="X-UA-Compatible"详解: X-UA-Compatible是针对IE8新加的一个设置,对于IE8之外的浏览器是不识别的,这 ...