我在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;
答案 0 :(得分:3)
如果是值类型数组,则需要将它们装箱,因此您需要使用类似inputArray.Cast<object>().ToArray()
的类似方法。
但是,可以将一组引用类型隐式转换为object[]
。
当您拥有多个类型的数组时,OfType
扩展方法也可用于过滤。
答案 1 :(得分:0)
我在想你做得对。 请检查一下:IEnumerable.Cast<>
似乎Cast方法剂量注释按照您的名称进行操作。