5

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

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

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

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

根据微软的文章,旧数组没有任何影响,所以最终的效果不会有什么不同。

我在这里遗漏了一点并且不了解转换器,还是真的一样?

4

3 回答 3

9

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

例如:

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

与只是:

 int[] newArr = Array.ConvertAll(oldArr, Convert.ToInt32);
于 2012-10-18T22:29:00.657 回答
3

最终结果是更少类型的代码和一个非常清楚的说明你在做什么。我正在将这个集合转换为那个集合(我只通过读取方法名称就知道这一点),而不必检查 foreach 循环的主体以查看发生了什么。

于 2012-10-18T22:30:57.490 回答
1

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

于 2012-10-18T22:28:53.107 回答