C#'ta `int` adresinden `enum` adresine nasıl döküm yapılır?


C#‘ta int değişkenini enum değişkenine dönüştürmek için, enum değişkenini açık bir şekilde tamsayıya dönüştürün.

SampleEnum sample = (SampleEnum)IntVariable;

Table of Contents

Çözüm 1: enum değişkeninin açık tip dökümünü kullanma

Bunu daha iyi anlamak için bir örnek üzerinden gidelim.

Pazartesiden başlayan hafta günlerini temsil eden Days adında bir enum türümüz var.

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

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

Ancak yukarıdaki int - enum dönüşümü ile ilgili bir sorun var.

int değeri C# Enum değişkeninde mevcut değilse ne olur?

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

Herhangi bir istisna fırlatmayacaktır.

Bu nedenle, tamsayıya dönüştürmeden önce int değerinin Enum adresinde mevcut olup olmadığını kontrol etmek daha iyidir.

enum değişkeninde bir tamsayı olup olmadığını kontrol edin

C#‘ta tüm tamsayı değerlerini almak için Enum Enum.GetValues yöntemini kullanabiliriz.

Bunları C# listesine dönüştürün, böylece verilen tamsayının enum değişkeninde var olup olmadığını kontrol etmek için list.Contains() yöntemini kullanabiliriz.

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");
}

Dönüştürülen tamsayı değerinin verilen enum türünde var olup olmadığını kontrol etmek için Enum.IsDefined() yöntemini kullanabiliriz.

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);
}

Çözüm 2: Enum.ToObject() yöntemini kullanın

C#‘ta Enum.ToObject() metodunu kullanabilir, int değerini enum değerine dönüştürebiliriz.

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.

Next
Previous