Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数组从T1型转换为T2型的有效处理方法_C#_.net - Fatal编程技术网

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

C# 将数组从T1型转换为T2型的有效处理方法,c#,.net,C#,.net,5分钟前我有一个真实的场景,我需要将Guid[]转换为对象[] 最简单、最快捷的解决方法是键入: var dataset = inputArray.Select(item => (object)item).ToArray(); 可读性和所有内容,但我不确定它是否非常有效(当然可能是编译器对其进行了一些优化) 您认为从一个类型到另一个类型最好是什么(假设它可以在两个类型之间转换,跳过整数解析等等) 编辑:Cast扩展方法当然也可用 var listOfGuids = new Guid[]{

5分钟前我有一个真实的场景,我需要将
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方法相比在性能上有任何显著差异。