与例如Array.ConvertAll相比,Array.ConvertAll的实际用途是什么?通过foreach循环遍历数组?

时间:2012-10-18 22:25:32

标签: c# arrays converter

我的问题通常是措辞,因此,我不会提供任何代码(除非有人要我添加它,但我认为我的问题很清楚)。 我一直在看两篇关于Array.ConvertAll方法的文章,但我自己找不到直接使用它的方法。 我读过的文章:

http://msdn.microsoft.com/en-us/library/exc45z53.aspx

"转换器和#34; (文章底部):http://www.codeproject.com/Articles/117611/Delegates-in-C-Attempt-to-look-inside-Part-4

现在我了解转换器的工作原理以及它是如何使用的,但是,我并没有看到转换器的直接必要性。由于一个对象如何被转换为另一个对象的实际方法,必须完全确定(例如在codeproject链接中的方法" ConvertToPersonInfo"或者是arroding Action / Lambda类型委托),是不是可以声明并实例化新对象的新数组,并对旧对象的旧数组进行foreach循环,并在该循环中复制所需的变量吗?

根据微软的文章,旧数组不受任何影响,因此最终效果不会有所不同。

我在这里错过了一点,并不理解转换器,还是它真的一样?

3 个答案:

答案 0 :(得分:9)

当然你可以自己做。它只是一种通过创建数组并为您循环来简化转换的方法。

例如:

 int[] newArr = new int[oldArr.Length];
 for (int i = 0; i < oldArr.Length; i++) {
   newArr[i] = Convert.ToInt32(oldArr[i]);
 }

VS。只是:

 int[] newArr = Array.ConvertAll(oldArr, Convert.ToInt32);

答案 1 :(得分:3)

最终结果是更少的类型代码和对您正在做的事情的非常明确的陈述。我正在将这个集合转换为该集合(我知道只需读取方法名称),而不必检查foreach循环的主体以查看正在发生的事情。

答案 2 :(得分:1)

如果您需要在代码中的多个位置使用它,它可以重复使用。但是,我认为自己实施它可以在效率方面更快。