C# 将数组从T1型转换为T2型的有效处理方法
5分钟前我有一个真实的场景,我需要将C# 将数组从T1型转换为T2型的有效处理方法,c#,.net,C#,.net,5分钟前我有一个真实的场景,我需要将Guid[]转换为对象[] 最简单、最快捷的解决方法是键入: var dataset = inputArray.Select(item => (object)item).ToArray(); 可读性和所有内容,但我不确定它是否非常有效(当然可能是编译器对其进行了一些优化) 您认为从一个类型到另一个类型最好是什么(假设它可以在两个类型之间转换,跳过整数解析等等) 编辑:Cast扩展方法当然也可用 var listOfGuids = new Guid[]{
Guid[]
转换为对象[]
最简单、最快捷的解决方法是键入:
var dataset = inputArray.Select(item => (object)item).ToArray();
可读性和所有内容,但我不确定它是否非常有效(当然可能是编译器对其进行了一些优化)
您认为从一个类型到另一个类型最好是什么(假设它可以在两个类型之间转换,跳过整数解析等等)
编辑:Cast
扩展方法当然也可用
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;
var listOfGuids=NewGuid[]{Guid.NewGuid(),Guid.NewGuid(),Guid.NewGuid()};
var listOfStrings=新字符串[]{“foo”,“bar”};
var objectListGuidsLinq=listOfGuids.Cast().ToArray();
var objectListStringsLinq=listOfStrings.Cast().ToArray();
var objectListStringsDirect=(object[])listOfStrings;
对于值类型数组,它们需要装箱,因此需要您的方法或类似的方法,如inputArray.Cast().ToArray()
但是,引用类型数组可以隐式转换为对象[]
另外,类型的
扩展方法在您有多个类型的数组时用于过滤。对于值类型数组,它们需要装箱,因此需要您的方法或类似的方法,如inputArray.Cast().ToArray()
但是,引用类型数组可以隐式转换为对象[]
另外,当您有一个包含多种类型的数组时,type的扩展方法对于过滤非常有用。我认为您的操作是正确的。
请检查以下内容:
似乎Cast方法dose note的工作方式与您从其名称中所期望的一样 我认为你做得对。
请检查以下内容:
似乎Cast方法dose note的工作方式与您从其名称中所期望的一样 Guid不被视为引用类型,因此在本例中,数组不能隐式转换为对象[]。我想对于值类型来说,最有效的方法是使用Select或Cast linq方法。此外,还有Array.CopyTo
和Array.Copy
方法,但我做了一个快速的基准测试,没有发现与Linq方法相比在性能上有任何显著差异。Guid不被视为引用类型,因此在本例中,数组不能隐式转换为对象[]。我想对于值类型来说,最有效的方法是使用Select或Cast linq方法。此外,还有Array.CopyTo
和Array.Copy
方法,但我做了一个快速的基准测试,没有发现与Linq方法相比在性能上有任何显著差异。