当前位置: 首页 > 编程语言 > C#

如何在C#中将System.Array转换为对象Share

时间:2023-04-10 14:16:04 C#

如何在C#中将System.Array转换为对象传递一些枚举字段,所以我使用以下内容:object[]fields=(object[])Enum.GetValues(typeof(SomeEnumType));但是,当我尝试将字段传递给foo(...)即[foo(fields)]时,我得到一个错误:“无法将‘SomeEnumType[]’类型的对象转换为‘system.Object[]’。谁能告诉我我做错了什么?如异常所述,您无法将SomeEnumType[]转换为object[]-前者是一个数组,其中每个值都是一个SomeEnumType值;后者是一个数组,其中每个元素都是一个引用。使用LINQ,您可以轻松创建新数组:object[]fields=Enum.GetValues(typeof(SomeEnumType)).Cast().ToArray();这将基本上包装每个元素(每个枚举值)以创建一个IEnumerable然后创建它的一个数组。类似于Tilak的方法,但我更喜欢使用Cast,因为我真的不需要通用投影。或者:SomeEnumType[]values=(SomeEnumType[])Enum.GetValues(typeof(SomeEnumType));object[]fields=Array.ConvertAll(values,x=>(object)x);Enum.GetValues(typeof(SomeEnumType)).Cast().ToArray()您需要转换正确的数组类型。沿着这些方向尝试一些东西:object[]fields=(object[])Enum.GetValues(typeof(SomeEnumType)).Cast().ToArray();错误消息指出该函数需要一个“object”类型的对象数组,而您传入??的是“SomeEnumType”类型,因此类型不匹配。以上就是C#学习教程的全部内容:HowtoconvertSystem.代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: