İçeriğe geç

Enum Tipleri ve Parse() TryParse() Kullanımı

Enum tipinin Parse() metodu kendisine parametre olarak verilen enum tipinde arama yapılırken kullanılmaktadır. Bu metodun nasıl kullanıldığı aşağıda verilmiştir.

using System;
namespace ConsoleApp3
{
    enum Ay
    {

        OCAK = 1,
        SUBAT,
        MART,
        NISAN,
        MAYIS,
        HAZIRAN,
        TEMMUZ,
        AGUSTOS,
        EYLUL,
        EKIM,
        KASIM,
        ARALIK
    }
    class Program
    {
        static void Main(string[] args)
        {
            var a  = Enum.Parse(typeof(Ay), "ARALIk", true);
            Console.WriteLine(a);
        }
    }
}

Yukarıdaki koda baktığımızda Parse() metoduna aşırı yüklenme yapılmıştır 2 parametreli şekilde de kullanılabilmektedir. var a = Enum.Parse(typeof(Ay), "ARALIk"); şeklinde... En sondaki true ifadesi küçük büyük harf hassasiyetinin önüne geçmek için kullanılmaktadır. Ancak bu metodun bir kötü durumu vardır. Enumlar içerisinde ARALIk şeklinde bir ifade yoksa bu metot hata fırlatacaktır. Programda çalışma zamanında crash olacaktır. Bunun önüne geçmek için TryParse() metodu geliştirilmiştir.

TryParse() metodu C# 4.0 ile birlikte gelmiştir. Bu metodun en bütük avantajı hatalı aramalara karşı try-catch ikilisine gerek duymamaktır. Lütfen aşağıdaki kodu inceleyiniz...

        static void Main(string[] args)
        {
            var aranacak = "ocak";
            Ay aylar;
            bool sonuc = Enum.TryParse<Ay>(aranacak, true, out aylar);
            Console.WriteLine(sonuc);
            Console.WriteLine(aylar);
        }

TryParse() metodu generic bir metottur. Bu nedenle metot adından sonra damond "<>" operatörüne yer verilmektedir.
Değişken önüne out anahtar kelimesinin yazılmasının sebebi sizce neden? Bu metot geriye true/false değerleri döndürmektedir. Ancak aylar anahtar kelimesinin içerisinde de arama sonucu saklanmaktadır. Burada 2 değişkenide döndürmek için C # geliştiricieleri ya Tupple değer dönecekti ya da burada olduğu gibi out anahtar kelimesini kullanacaklardı tercihlerini out anahtar kelimesinden kullanmışlar. Bence güzel olmuş bunun sebebi C# 7.0 ile birlikte out kulanmak için değişkenin önceden tanımlanmasına gerek yoktu doğal olarak kodumuz aşağıdaki gibi olacaıktır.

using System;
namespace ConsoleApp3
{
    enum Ay
    {

        OCAK = 1,
        SUBAT,
        MART,
        NISAN,
        MAYIS,
        HAZIRAN,
        TEMMUZ,
        AGUSTOS,
        EYLUL,
        EKIM,
        KASIM,
        ARALIK
    }
    class Program
    {
        static void Main(string[] args)
        {
            var aranacak = "ocak";
            bool sonuc = Enum.TryParse<Ay>(aranacak, true, out Ay aylar);
            Console.WriteLine(sonuc);
            Console.WriteLine(aylar);
        }
    }
}
Kategori:C Sharp

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir