Array.ConvertAll()和ToArray()方法,哪个更好?

问题描述 投票:0回答:0

从控制台读取数据并存储到Int数组中,以下哪种方法更好?这两个方法有什么区别吗?

int[][] s = new int[3][];
            for(int i=0; i<elements.Length;i++)
            {
                s[i] = Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToArray();
            }

int[][] s = new int[3][];

        for (int i = 0; i < 3; i++) {
            s[i] = Array.ConvertAll(Console.ReadLine().Split(' '), sTemp => Convert.ToInt32(sTemp));
        }

先谢谢了!!!

c# arrays type-conversion readline jagged-arrays
1
投票

首先这些并不等同,在一个版本中,你使用的是 int.Parse(x) 在另 Convert.ToInt32(sTemp)

撇开这一点不谈,你已经找到了一个完美的例子,说明如何用一种以上的方式来做一件事... ... 在编程中,你会发现这很常见。

ConvertAll()

将一种类型的数组转换为另一种类型的数组。

Select()

将一个序列的每个元素投影到一个新的形式中。

ToArray()

从一个IEnumerable创建一个数组。

从技术上讲,它们的组合产生了同样的东西,但由于它们属于略微不同的领域,所以它们的方式略有不同。BCL 在稍微不同的领域都有关注。

就个人而言,我不认为 ConvertAll 如今,人们已经非常熟悉了。LINQ 并喜欢链式方法。

至于哪种方法的性能更好,我们必须要写很多测试才能弄清楚,这将归结为每个平台每个数组大小的分配量与速度。不过,我觉得在日常的使用中,两者的差别会比较不明显,我估计你很难在任何显著的sigma上断然找到非常大的性能差异。

总之,用什么 喜欢

© www.soinside.com 2019 - 2024. All rights reserved.