Cでは、enums
は内部的に整数に相当します。したがって、enum
のデータ型も整数として扱うことができます。
C#で同じことを達成する方法は?
以下のように、単にint
にキャストします。
int eValue = (int)enumValue;
内部整数値を設定する方法を示す別の例を次に示します。
public enum MyEnum
{
MyValue1 = 1,
MyValue2 = 2
}
(int)MyEnum.MyValue2 == 2; // True
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値からは独立しています。
デフォルトでは、列挙型の各要素の基本型は整数です。
enum Values
{
A,
B,
C
}
各アイテムにカスタム値を指定することもできます。
enum Values
{
A = 10,
B = 11,
C = 12
}
int x = (int)Values.A; // x will be 10;
注:デフォルトでは、最初の列挙子の値は0です。
直接キャストできます:
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.
キャストを使用します。
public enum MyEnum : int {
A = 0,
B = 1,
AB = 2,
}
int val = (int)MyEnum.A;
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);
}
}