Bagaimana cara cast `int` ke `enum` di C#


Untuk cast int ke enum di C#, secara eksplisit ketik cast variabel enum ke integer.

SampleEnum sample = (SampleEnum)IntVariable;

Daftar isi

Solusi 1: Menggunakan pengecoran tipe eksplisit dari variabel enum

Mari kita lihat sebuah contoh untuk memahaminya lebih lanjut.

Kita memiliki tipe enum yang disebut Days, yang merepresentasikan hari dalam seminggu mulai dari hari Senin.

public enum Days
{
        Monday,  
        Tuesday,  
        Wednesday,  
        Thursday,  
        Friday,  
        Saturday,  
        Sunday
}

int dayInteger = 6;
Days day = (Days) dayInteger;
Console.WriteLine(day.ToString());//Monday

Tetapi ada masalah dengan konversi **int ke enum ** di atas.

Bagaimana jika nilai int tidak ada di variabel C# Enum?

int dayInteger = 100;
Days day = (Days) dayInteger;
Console.WriteLine(day.ToString());//100

Ini tidak akan melemparkan pengecualian apa pun.

Jadi lebih baik untuk memeriksa apakah nilai int ada di Enum sebelum casting ke integer.

Periksa apakah integer ada atau tidak di variabel enum

Untuk mendapatkan semua nilai integer di C# Enum kita bisa menggunakan metode Enum.GetValues.

Konversikan ke daftar C#, sehingga kita dapat menggunakan metode list.Contains() untuk memeriksa apakah integer yang diberikan ada di variabel enum.

var intValue = 100;
var enumValues = Enum.GetValues(typeof(Days)).Cast<int>().ToList();

if(enumValues.Contains(intValue)){
  Console.WriteLine("We can Cast int to Enum");  
   Days day = (Days) intValue;
}else{
  Console.WriteLine("Cannot Cast int to Enum");
}

Kita dapat menggunakan metode Enum.IsDefined() untuk memeriksa apakah nilai integer yang dikonversi ada dalam tipe enum yang diberikan.

var enumValue = (Days)1;

if (Enum.IsDefined(typeof(Days), enumValue)){
   Console.WriteLine("The converted int to enum value is",enumValue);
}else{
   Console.WriteLine("Cannot Convert int to Enum",enumValue);
}

Solusi 2: Gunakan metode Enum.ToObject()

Kita bisa menggunakan metode Enum.ToObject(), mengubah nilai int menjadi enum di C#.

var enumValue = Enum.ToObject(typeof(Days),1);

Console.WriteLine(enumValue);

//Tuesday

Console.WriteLine(enumValue.GetType());
//Days

Avatar
Arunkumar Gudelli

I am One among a million Software engineers of India. I write beautiful markup.I make the Web useful.

Selanjutnya
Sebelumnya