java - 在 for 循环中获取枚举的序数 [c#]

标签 java c#

如何在 for 循环中获取 Enum 的序数?

我尝试过这样的事情:

Enum test {A,B,C}
byte[] helper =new byte[3];

foreach (tests i in Enum.GetValues(typeof(test)))
{ helper[i] == test.i; }

但这不起作用...

在Java中,我知道你可以使用:

Enum test {A,B,C}
byte[] helper =new byte[3];

for (test i : test.values())
{ helper[i] == i.ordinal(); }

c#中有类似的东西吗? 或者有人有更好的主意来解决这个问题吗?

这里是代码的原始部分(Java):

public enum Facelet
{U1, U2, U3, U4, U5, U6, U7, U8, U9, R1, R2, R3, R4, R5, R6, R7, R8, R9, F1, F2, F3, F4, F5, F6, F7, F8, F9, D1, D2, D3, D4, D5, D6, D7, D8, D9, L1, L2, L3, L4, L5, L6, L7, L8, L9, B1, B2, B3, B4, B5, B6, B7, B8, B9}

enum color { U, R, F, D, L, B }
enum Corner{URF, UFL, ULB, UBR, DFR, DLF, DBL, DRB }
Byte ori;
final static Facelet[][] cornerFacelet = { { U9, R1, F3 }, { U7, F1, L3 }, { U1, L1, B3 }, { U3, B1, R3 },
        { D3, F9, R7 }, { D1, L9, F7 }, { D7, B9, L7 }, { D9, R9, B7 } };
public Color[] f = new Color[54];

这是 for 循环:

               for (Corner i : Corner.values()) 
            {
                for (ori = 0; ori < 3; ori++)
                    if (f[cornerFacelet[i.ordinal()][ ori].ordinal()] == color.U || f[cornerFacelet[i.ordinal()][ori].ordinal()] == color.D)
                        break;}

最佳答案

您只需将枚举对象转换为 int 即可获取序数值。

所以:

int ordinalValue = (int) i;

编辑:在阅读了更新后的OP后,我认为这应该是朝着正确方向迈出的一步。唯一的问题是 colorColor 之间的类型不匹配,如评论部分所述。

class Program
{
    public enum Facelet
    {
        /* values */
    }

    enum color
    {
        /* values */
    }

    enum Corner
    {
        /* values */
    }

    public static Color[] f = new Color[54];

    private static Facelet[][] cornerFacelet =
    {
        new Facelet[] {Facelet.U9, Facelet.R1, Facelet.F3},
        new Facelet[] {Facelet.U7, Facelet.F1, Facelet.L3},
        new Facelet[] {Facelet.U1, Facelet.L1, Facelet.B3},
        new Facelet[] {Facelet.U3, Facelet.B1, Facelet.R3},
        new Facelet[] {Facelet.D3, Facelet.F9, Facelet.R7},
        new Facelet[] {Facelet.D1, Facelet.L9, Facelet.F7},
        new Facelet[] {Facelet.D7, Facelet.B9, Facelet.L7},
        new Facelet[] {Facelet.D9, Facelet.R9, Facelet.B7},
    };


    static void Main(string[] args)
    {
        foreach (Corner i in Enum.GetValues(typeof(Corner)))
        {
            int cornerOrdinal = (int) i;
            for (byte ori = 0; ori < 3; ori++)
            {
                Facelet currentCornerFacelet = cornerFacelet[cornerOrdinal][ori];
                int faceletOrdinal = (int) currentCornerFacelet;
                if (f[faceletOrdinal] == color.U || f[faceletOrdinal] == color.D)
                {
                    break;
                }
            }
        }
    }
}

关于java - 在 for 循环中获取枚举的序数 [c#],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40871850/

相关文章:

java - JSON 在响应中返回空值

javascript - 母版页中的 Jquery 日期选择器

c# - c#中的递归相关问题

java - 如何在服务器中动态指定jsp文件上传存储文件夹路径

java - 如何使用 Java MongoDriver 执行 MongoDB js 脚本

c# - C# 中的无符号字符指针?

c# - 没有对多个通用约束的隐式转换

c# - 无法从根提供程序解析,因为它需要范围内的服务

java - 如何使用 int 索引访问 TreeMap 中的项目?

java - 尝试使用 java 运行 sql 查询时出现 406 错误