C# string 数组 转 int 数组

来源:互联网 发布:淘宝补偿五元怎么使用 编辑:程序博客网 时间:2024/05/18 01:54

 string 数组 转 int 数组 4种方法效率都差不多没什么可说的,仅供记录。唉人老了脑子不好使了。

private int maxCount = 10000000;private string[ ] GetData( ){string[ ] input = new string[maxCount];for ( int i = 0; i < maxCount; i++ ){input[i] = i.ToString( );}return input;}private void button1_Click( object sender, EventArgs e ){string[ ] input = GetData( );DateTime tStart = DateTime.Now;int[ ] iTemp = new int[input.Length];for ( int i = 0; i < input.Length; i++ ){iTemp[i] = int.Parse( input[i] );}label1.Text = String.Format( "{0}毫秒", ( DateTime.Now - tStart ).Milliseconds );}private void button2_Click( object sender, EventArgs e ){string[ ] input = GetData( );DateTime tStart = DateTime.Now;int[ ] output = Array.ConvertAll<string, int>( input, delegate( string s ) { return int.Parse( s ); } );label2.Text = String.Format( "{0}毫秒", ( DateTime.Now - tStart ).Milliseconds );}private void button3_Click( object sender, EventArgs e ){string[ ] input = GetData( );DateTime tStart = DateTime.Now;int[ ] iTemp = new int[input.Length];Array.ForEach( input, i =>{int idx = int.Parse( i );iTemp[idx] = idx;} );label3.Text = String.Format( "{0}毫秒", ( DateTime.Now - tStart ).Milliseconds );}private void button4_Click( object sender, EventArgs e ){string[ ] input = GetData( );DateTime tStart = DateTime.Now;int[ ] output = Array.ConvertAll( input, s => int.Parse( s ) );label4.Text = String.Format( "{0}毫秒", ( DateTime.Now - tStart ).Milliseconds );}

 

button1 是最简单清楚的,考虑到4个方法的效率都差不多,所以还是它吧。

button2 是用Array类中的静态泛形式方法ConvertAll进行转换

delegate(string s) { return int.Parse(s); }这句表示:建立一个匿名委托,该委托关联的方法体是:return int.Parse(s); 将数组中的每个字符串强制转换成整形并返回添加给 output

这个方法是我网上找的很有深度,但效率没什么提高所以不推荐新手。

button3 是用Array类中的静态泛形式方法ForEach进行循环,用lambda 运算符代替委托。

button4 是button2的变形用lambda 运算符代替委托。现在懒人很多,少写点吧。

 

以上就是转换的4种方法,自己写给自己看的。效率都差不多,所以任选。OK

The End

原创粉丝点击