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 上明确地找到非常大的性能差异。
简而言之,用你喜欢的
以下哪种方法更好地从控制台读取并将其存储到 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 上明确地找到非常大的性能差异。
简而言之,用你喜欢的