Array.ConvertAll<TInput, TOutput> 数组相互转化方法
有个需求,把char数组转换为int数组,然后噼里啪啦就弄了这样一堆代码;
public static int[] CharArrToIntArr(char[] charArr)
{
int[] ints = new int[charArr.Length];
for (int i = 0; i < charArr.Length; i++)
{
ints[i] = (int)charArr[i];
}
return ints;
}
后来又有需求,把int数组在转换为char数组,然后上面代码又噼里啪啦弄了一堆,这个时候就发现,
写的这一堆代码是多么的辣鸡,一个类型转换需要那么多代码,如果在遇到string数组转char数组,
char数组再转string数组,这样转换来转换去,一点都不优雅;
后来找到了一个Array.ConvertAll<TInput, TOutput> 方法,完美解决:
这个方法用途:将一种类型的数组转换为另一种类型的数组,比如讲char[] 数组转化为int[] 数组。
类型参数
- TInput:源数组元素的类型。
- TOutput:目标数组元素的类型。
- 示例代码:
- 将char 数组转换为int 数组
char[] charArray = new char[] { 'a', 'b', 'c' };
int[] intArray = Array.ConvertAll<char, int>(charArray, value => Convert.ToInt32(value));
对比之后,发现代码简洁了好多,那么效率有什么区别呢?
来对比一波
char[] charArray = new char[] { 'a', 'b', 'c' };
DateTime startDate = DateTime.Now;
for (int i = 0; i <; i++)
{
//int[] intArray = Array.ConvertAll<char, int>(charArray, value => Convert.ToInt32(value));
int[] intArray = Test_1.CharArrToIntArr(charArray);
}
DateTime endDate = DateTime.Now;
Console.WriteLine((endDate - startDate).TotalMilliseconds);
运行了十次之后,看下平均值,发现二者差距不是特别大,不过还是推荐 Array.ConvertAll 方法,因为是原生的,简洁明了;

Array.ConvertAll<TInput, TOutput> 数组相互转化方法的更多相关文章
- C#类型的转换:Converter<TInput, TOutput> 委托的使用
Converter<TInput, TOutput> 委托 表示将对象从一种类型转换为另一种类型的方法. 此委托由 Array 类的 ConvertAll<TInput, TOutp ...
- array、list和set相互转化的方法
这里总结一下Array.List和Set相互转化的方法. Array转化为List 将Array转化为List是使用Arrays.asList()方法. String[] arr= new Strin ...
- 数组的方法 Array.map();Array.every()和Array.some();数组的indexof();检测是否是数组isArray(obj);
数组的方法 Array.map(); 栗子: var a=[1,2,,3]; var b=a.map( function(value){return value*value} ); alert(b); ...
- iOS 判断数组array中是否包含元素a,取出a在array中的下标+数组方法详解
目前找到来4个解决办法,第三个尤为简单方便 NSArray * arr = @["]; //是否包含 "]) { NSInteger index = [arr indexOfObj ...
- js中Array数组基本方法
总结:push() 添加元素到数组未尾, 返回数组长度 unshift() 添加元素到数组头部, 返回数组长度 pop() 删除数组未尾元素, 返回删除元素 shift() 删除数组头部元素, 返回删 ...
- Object.prototype.toString.call() 、 instanceof 以及 Array.isArray()判断数组的方法的优缺点
1. Object.prototype.toString.call() 每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object ...
- Array数组的方法总结
1.检测数组 自从ECMAScript3作出规定后,就出现了确定某个对象是不是数组的经典问题.对于一个网页,或者一个全局作用域而言,使用instanceof操作符就能得到满意结果. if (value ...
- jquery遍历数组与筛选数组的方法
grepgrep()方法用于数组元素过滤筛选 grep(array,callback,invert)array:待过滤数组;callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第 ...
- ES6之数组扩展方法【一】(相当好用)
form 转化为真正的数组 先说一下使用场景,在Js中,我们要经常操作DOM,比如获取全部页面的input标签,并且找到类型为button的元素,然后给这个按钮注册一个点击事件,我们可能会这样操作: ...
随机推荐
- leaflet的使用
LeafLet 简单使用 WangKane 关注 0.4 2018.12.03 16:08 字数 887 阅读 3773评论 0喜欢 4 Leaflet 使用 最近在Angular项目中,用到了地图 ...
- string::cbegin string::cend
const_iterator cbegin() const noexcept; const_iterator cend() const noexcept;注:返回常量迭代器,不能修改 #include ...
- ssh推送安装mysql脚本
[root@tianyun project]# vim mysql_install_1.sh #! /usr/bin/env bash # mysql install 1 # by tianyun w ...
- Java生成压缩文件(zip、rar 格式)
jar坐标: <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</ar ...
- setTimeout设置为0 为啥不能立马执行
setTimeout(function(){}, timer) 是指延时执行.第一个参数是回调函数,第二个参数是指延时多久执行回调函数. setTimeout(function(){console.l ...
- 06-vue项目02:vuex、Mutation、Action、ElementUI、axios
1.Vuex 1.为什么使用VueX data从最上面的组件,一层层往下传值,一层层的验证 Vue单向数据流 “中央空调“,代理 VueX 解决数据 传值.. 2.Vuex介绍与安装 (1)Vuex官 ...
- Codeforces Round #456 (Div. 2) 912E E. Prime Gift
题 OvO http://codeforces.com/contest/912/problem/E 解 首先把这个数字拆成个子集,各自生成所有大小1e18及以下的积 对于最坏情况,即如下数据 16 2 ...
- 错误调试以及debug的使用
/*定义 .search 搜索*/ $.fn.UiSearch=function(){ var ui=$(this); //任何地方都可以使用断点调试:debugger; //调试时,可以在控制台输入 ...
- npm 镜像地址配置
1.查询当前镜像地址 npm get registry 2.修改镜像地址 npm config set registry http://registry.npm.taobao.org/ 原始镜像地址( ...
- Appium真机运行测试用例