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();
C#类型的转换:Converter<TInput, TOutput> 委托的使用的更多相关文章
- spring类型自动转换——@InitBinder和Converter
spring有2种类型转换器,一种是propertyEditor,一种是Converter.虽然都是类型转换,但是还是有细微差别. 所以这里以一个例子的形式来分析一下这2种类型转换的使用场景和差别. ...
- Array.ConvertAll<TInput, TOutput> 数组相互转化方法
有个需求,把char数组转换为int数组,然后噼里啪啦就弄了这样一堆代码: public static int[] CharArrToIntArr(char[] charArr) { int[] in ...
- SpringMVC对日期类型的转换
在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置. 1.如果查询类使我们自己写,那么在属性前面加上@Date ...
- C#高级编程 (第六版) 学习 第六章:运算符和类型强制转换
第六章 运算符和类型强制转换 1,运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ ...
- XAML实例教程系列 - 类型转换器(Type Converter)七
XAML实例教程系列 - 类型转换器(Type Converter) 分类: Windows 8 Silverlight2012-06-25 13:40 961人阅读 评论(0) 收藏 举报 butt ...
- 【读书笔记】C#高级编程 第七章 运算符和类型强制转换
(一)运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ -- 移位运算符 < ...
- C#高级编程笔记 2016年10月8日运算符和类型强制转换
1.checked和unchecked 运算符 C#提供了checked 和uncheckde 运算符.如果把一个代码块标记为checked, CLR就会执行溢出检查,如果发生溢出,就抛出overfl ...
- [改善Java代码]避开基本类型数组转换列表陷阱
开发中经常用到Arrays和Collections这两个工具类. 在数组和列表之间进行切换.非常方便.但是也会遇到一些问题. 看代码: import java.util.Arrays; import ...
- [改善Java代码]不要让类型默默转换
建议23:不要让类型默默转换 public class Client { // 光速是30万公里/秒,常量 public static final int LIGHT_SPEED = 30 * 100 ...
随机推荐
- ios如何获取位置权限
获取当前位置需要改plist文件 在plist文件加入 NSLocationWhenInUseUsageDescription 字段 /** 初始化一个管理器对象 */ locationMan ...
- cordova 日曆 聯系人 插件使用
日曆插件 聯係人插件 我用聯係人插件, function onSuccess(contact) { alert("Save Success"); }; function onErr ...
- MVC组件分析(转)
2System.Web.Mvc V 4.0.0.0 组件分析 2.1 Routing组件(路由选择) Routing的作用就是负责分析Url Action的要求• 必须是一个公有方法• 必须返回Act ...
- Linux下yum安装MPlayer 或 LVC视频播放器
添加第三方源 su -c 'rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noar ...
- Velocity原理
1.准备 添加引用:velocity-1.7.jar,velocity-tools-2.0.jar,commons-beanutils-1.7.0.jar,commons-chain-1.1.jar, ...
- 十、Struts2结果集
十.Struts2结果集 1.Struts.xml配置文件 result元素:指定动作类的动作方法执行完后的结果视图. 属性: name:字符串,与 ...
- Mir2源码详解之服务端-选择(角色)网关(SelGate)
其实,SelGate也就是 LoginGate,其源码实现完全相同.不必怀疑,市面上的都是这么做~!这里单独写这篇文章,就是为了说明这点!
- Wpf实现图片自动轮播自定义控件
近来,公司项目需要,需要写一个自定义控件,然后就有下面的控件产生.样式没有定义好,基本功能已经实现.1.创建为自定义控件的XAML页面.下面为后台代码 using System; using Syst ...
- 使用JDBC向数据库中插入一条数据(第一次修改版)
增加了一个Tools类,放了一些常用的工具 package com.JDBC.java; import java.io.IOException; import java.io.InputStream; ...
- Ubuntu 14.04 – How to install xrdp in Ubuntu 14.04
http://c-nergy.be/blog/?p=5305 Hello World, Ubuntu 14.04 has been released on April 17th 2014 and we ...