gpt4 book ai didi

c# - 将整数数组转换为枚举数组

转载 作者:太空狗 更新时间:2023-10-29 19:52:28 28 4
gpt4 key购买 nike

我有一个有 4 个值的枚举:

public enum DriveRates 
{
driveSidereal = 0,
driveLunar = 1,
driveSolar = 2,
driveKing = 3
}

我有一组值,我想将它们转换为一组 DriveRates。但是,当我执行 var rates = (DriveRates[])ret; 时,ret 是一个数字对象数组(可能是整数),它说 Unable to cast “System.Object[]”类型的对象键入“ASCOM.DeviceInterface.DriveRates[]”。

ret={0,1,2,3}。我应该怎么做呢?同样,我正在尝试将一个枚举值数组转换为一个枚举数组...嗯,值 :) 但我正在尝试从类型 object[] 转换为类型 DriveRates [].

最佳答案

如果它真的是一个 object[],您不能只转换数组。不过,您可以非常轻松地创建一个新数组:

var enumArray = originalArray.Cast<DriveRates>().ToArray();

如果它实际上是一个 int[] 数组开始,您可以强制转换 - 虽然您必须先与 C# 编译器很好地交谈:

using System;

class Program
{
enum Foo
{
Bar = 1,
Baz = 2
}

static void Main()
{
int[] ints = new int[] { 1, 2 };
Foo[] foos = (Foo[]) (object) ints;
foreach (var foo in foos)
{
Console.WriteLine(foo);
}
}
}

C# 编译器不相信存在从 int[]Foo[] 的转换(并且在 C# 规则中不存在)。 ..但是 CLR 可以处理这种转换,所以只要您可以说服 C# 编译器一起玩(首先转换为 object)就可以了。

当原始数组实际上是一个 object[] 时,这不起作用

关于c# - 将整数数组转换为枚举数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15168855/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com