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

Array.ConvertAll() and ToArray() method, which is better?

以下哪种方法更好地从控制台读取并将其存储到 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));
        }

提前致谢!!!

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

除此之外,您已经找到了一个完美的示例,说明如何以不止一种方式做某事...在编程中您会发现很多。

ConvertAll()

Converts an array of one type to an array of another type.

Select()

Projects each element of a sequence into a new form.

ToArray()

Creates an array from a IEnumerable.

从技术上讲,它们结合起来产生相同的东西,但由于它们属于 BCL 中略有不同的区域,所以它们的处理方式略有不同在略有不同的领域。

就我个人而言,我不认为 ConvertAll 这些天使用了那么多,因为人们非常熟悉 LINQ 并且喜欢链接方法。

至于哪个对性能更好,我们将不得不编写大量测试来解决这个问题,这将归结为每个平台每个数组大小的分配速度。然而,我觉得这种差异在日常中相对难以区分,我猜你会很难在任何显着的 sigma 上明确地找到非常大的性能差异。

简而言之,用喜欢的