我的问题通常是措辞,因此,我不会提供任何代码(除非有人要我添加它,但我认为我的问题很清楚)。 我一直在看两篇关于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循环,并在该循环中复制所需的变量吗?
根据微软的文章,旧数组不受任何影响,因此最终效果不会有所不同。
我在这里错过了一点,并不理解转换器,还是它真的一样?
答案 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)
如果您需要在代码中的多个位置使用它,它可以重复使用。但是,我认为自己实施它可以在效率方面更快。