web-dev-qa-db-ja.com

C#でEnum Index値を取得する方法

Cでは、enumsは内部的に整数に相当します。したがって、enumのデータ型も整数として扱うことができます。

C#で同じことを達成する方法は?

45
Shamim Hafiz

以下のように、単にintにキャストします。

int eValue = (int)enumValue;

内部整数値を設定する方法を示す別の例を次に示します。

public enum MyEnum
{
    MyValue1 = 1,
    MyValue2 = 2
}

(int)MyEnum.MyValue2 == 2; // True
78
Iain Ward

Enum-Typeをintに変換する別の方法:

enum E
{
    A = 1,   /* index 0 */
    B = 2,   /* index 1 */
    C = 4,   /* index 2 */
    D = 4    /* index 3, duplicate use of 4 */
}

void Main()
{
    E e = E.C;
    int index = Array.IndexOf(Enum.GetValues(e.GetType()), e);
    // index is 2

    E f = (E)(Enum.GetValues(e.GetType())).GetValue(index);
    // f is  E.C
}

より複雑ですが、列挙値に割り当てられたINT値からは独立しています。

33
user1027167

デフォルトでは、列挙型の各要素の基本型は整数です。

enum Values
{
   A,
   B,
   C
}

各アイテムにカスタム値を指定することもできます。

enum Values
{
   A = 10,
   B = 11,
   C = 12
}
int x = (int)Values.A; // x will be 10;

注:デフォルトでは、最初の列挙子の値は0です。

10
Homam

直接キャストできます:

enum MyMonthEnum { January = 1, February, March, April, May, June, July, August, September, October, November, December };

public static string GetMyMonthName(int MonthIndex)
{
  MyMonthEnum MonthName = (MyMonthEnum)MonthIndex;
  return MonthName.ToString();
}

例えば:

string MySelectedMonthName=GetMyMonthName(8);
 //then MySelectedMonthName value will be August.
6
Durgesh Pandey

単純なキャストを使用します。

int value = (int) enum.item;

enum(C#リファレンス) を参照してください

2
Akram Shahda

キャストを使用します。

public enum MyEnum : int    {
    A = 0,
    B = 1,
    AB = 2,
}


int val = (int)MyEnum.A;
1
thumbmunkeys
using System;
public class EnumTest 
{
    enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

    static void Main() 
    {

        int x = (int)Days.Sun;
        int y = (int)Days.Fri;
        Console.WriteLine("Sun = {0}", x);
        Console.WriteLine("Fri = {0}", y);
    }
}
1
Aravind