Enum.Parse
Enum.Parse ve IsDefined ile metinleri enum'a çevirmeyi öğrenirsin.
Enum.Parse ile dizeden enum'a
Bir dizeyi enum değerine çevirmek için Enum.Parse metodunu kullanırsın. İlk parametre typeof(EnumName) ile tür, ikinci parametre ise dize değeridir. Dize enum üye adıyla eşleşmezse FormatException fırlatılır.
Örnek: Color c = (Color)Enum.Parse(typeof(Color), "Green"); satırı c'ye Color.Green atar. Dize büyük-küçük harfe duyarlıdır; "green" (küçük harfle) yazarsan hata alırsın. Bu yüzden kullanıcı girdisi için daha güvenli bir yöntem tercih edilir.
Enum.TryParse ile güvenli çözümleme
Enum.TryParse metodu, int.TryParse gibi güvenli bir çözümleme yapar. İstisna fırlatmak yerine bool döndürür ve sonucu out parametresiyle verir. Kullanıcı girdisi için idealdir.
Örnek: if (Enum.TryParse<Color>(input, out Color c)) ifadesi, input geçerliyse c'ye değeri koyar ve true döner. Geçersizse false döner ve program çökmeden yoluna devam eder. Genel metod olduğu için <Color> ile türü açıkça belirtirsin.
Enum.IsDefined ile geçerlilik
Bir değerin (sayı ya da dize) enum'da karşılığı olup olmadığını Enum.IsDefined(typeof(EnumName), value) ile kontrol edersin. Bu, hem sayısal hem de dize değerleri için çalışır; dönüş bool'dur.
Örnek: Enum.IsDefined(typeof(Color), "Green") çağrısı true, Enum.IsDefined(typeof(Color), 99) çağrısı false döner. Böylece dönüşüm yapmadan önce değerin geçerli olduğunu doğrulayabilir, hataları önceden yakalayabilirsin.
Uygulama Dizeyi enum'a çözümle
input değişkenini Enum.TryParse<Color> ile c değişkenine çevir. Dönüşüm başarılıysa c'yi Console.WriteLine ile yazdır. if ile TryParse'ın dönüşünü kontrol etmelisin. Color enum'u dosyanın başında tanımlıdır.
Örnek çözümü göster
Color c; tanımla, sonra if (Enum.TryParse<Color>(input, out c)) ile kontrol et ve WriteLine ile c'yi yazdır.
Örnek çözüm:
using System;
enum Color { Red, Green, Blue }
class Program
{
static void Main()
{
string input = "Blue";
Color c;
if (Enum.TryParse<Color>(input, out c))
{
Console.WriteLine(c);
}
}
}
Kendini test et
-
"red" (küçük harf) ile Parse ne yapar?
Color c = (Color)Enum.Parse(typeof(Color), "red");- FormatException fırlatır
- Red olarak çözümlenir
- null döner
- default değer döner
Cevabı göster
FormatException fırlatır — Doğru! Enum.Parse büyük-küçük harfe duyarlıdır; 'red' hataya yol açar.
-
TryParse çağrısı
Color c; bool ok = ____; Console.WriteLine(ok);Cevabı göster
Color c; bool ok = Enum.TryParse<Color>("Red", out c); Console.WriteLine(ok); -
Enum.IsDefined neden kullanılır?
- Daha hızlı olduğu için
- Geçersiz değeri önlemek için
- Sadece string için
- Enum'u sıfırlamak için
Cevabı göster
Geçersiz değeri önlemek için — Doğru! IsDefined ile geçersiz değerleri dönüşümden önce yakalarsın.