5分钟前,我有一个真实场景,我需要将Guid[]
转换为object[]
。将数组从T1类型转换为T2类型的处理有效方式
死者简单快捷的出路,这是键入:
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;
Guid不被视为引用类型,因此对于该示例,数组不能隐式转换为object []。我猜对于值类型,最有效的方法是使用Select或Cast <> linq方法。 – Henrik 2012-08-01 08:37:23
是的,我忘了提及,Guid是一种值类型。此外,还有'Array.CopyTo'和'Array.Copy'方法,但我做了一个快速的基准测试,并且在Linq方法中没有看到任何显着的性能差异。 – 2012-08-01 09:02:19