处理将数组从T1类型转换为T2类型的有效方法

时间:2012-07-31 06:45:44

标签: c# .net

我在5分钟前有一个真实场景,我需要将Guid[]变成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;

2 个答案:

答案 0 :(得分:3)

如果是值类型数组,则需要将它们装箱,因此您需要使用类似inputArray.Cast<object>().ToArray()的类似方法。

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

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

答案 1 :(得分:0)

我在想你做得对。 请检查一下:IEnumerable.Cast<>

似乎Cast方法剂量注释按照您的名称进行操作。