0

5 分钟前我有一个真实场景,我需要将 aGuid[]变成object[].

最简单快捷的解决方法是输入:

var dataset = inputArray.Select(item => (object)item).ToArray();

可读性和一切,但我不确定它是否非常有效(当然可能是编译器对其进行了一些优化)。

您建议最好从一个类型转到另一个类型(假设它是可转换的,跳过整数解析等)?

编辑: Cast<T>扩展方法当然也可以使用。

var listOfGuids = new Guid[]{Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid()};
var listOfStrings = new string[]{"foo", "bar"};

var objectListGuidsLinq = listOfGuids.Cast<object>().ToArray();
var objectListStringsLinq = listOfStrings.Cast<object>().ToArray();
var objectListStringsDirect = (object[]) listOfStrings;
4

2 回答 2

3

在值类型数组的情况下,它们需要被装箱,因此需要您的方法或类似的东西inputArray.Cast<object>().ToArray()

但是,可以将引用类型数组隐式转换为object[].

OfType当您有多个类型的数组时,扩展方法对于过滤也很有用。

于 2012-07-31T06:58:04.230 回答
0

我认为你做得对。请检查:IEnumerable.Cast<>

似乎 Cast 方法的剂量说明正如您从其名称中所期望的那样工作。

于 2012-07-31T07:02:34.313 回答