24 Haziran 2015 Çarşamba

C# Enum tipleri

Merhaba arkadaşlar,

Bu gün ilk C# makalemi oluşturacağım. değinmek istediğim konu Enum tipleri(numarandırıcılar). Bu tipler sayesinde sınırlı değerlere sahip olabilecek değişkenleri temsil edebilirler. bu sayede değişkenin alabileceği değerleri hem kodlamak zorunda kalmaz, hem de olası değer durumlarına kod yazacağımız durumlarda değeri hatırlamak zorunda kalmayız(örn. switch döngüleri.

enum Gunler
        {
            pazartesi, salı, çarşamba, perşembe, cuma
        } 


şeklinde tanımladığımız enum tipi için .Net ide ortamında "sw" yazıp tab yaparsak ide bize olası değerlerin tek tek işlendiği swith-case yapısını oluşturacaktır.).

Benim burda değinmek istediğim Enum tip değerlerini alıp kontrol içeriğini doldurmak ve kontrolden seçilen değerin enum tipine dönüştürülerek kullanılması olacak. Konunun daha iyi anlaşılması için koda geçelim;



using System;
using System.Drawing;
using System.Windows.Forms;

namespace EnumTypes
{
    class Colours
    {
        private KnownColor _color;
        public String Colour { 

get { return _color.ToString(); } 
set { _color = (KnownColor)Enum.Parse(typeof(KnownColor), value); } 
}
/*Tüm anlatılanların özeti burası. Burada, sınıfımız "Colour" özelliği ile, aldığı aldığı string değeri KnownColor enum tipine dönüştürmekte ve bunu _color isimli private KnownColor tipli üyeye atamaktadır.*/

        public String[] ColorNames()
        {
           return Enum.GetNames(typeof(KnownColor));
        }
//bu fonksiyonda parametresine aldığı controlü _color private üyesi değeriyle boyuyor.
        public void PaintMe(object sender)
        {
            Control ctrl = sender as Control;
            if (ctrl == null)
                return;

            try
            {
                ctrl.BackColor = Color.FromKnownColor(_color);
            }

            catch (Exception ex)
            {
                throw new ArgumentException(ex.Message);
            }
        }
    }
}



uygulama koduda aşağıda ekliyorum.

Örnek çok anlamlı olmasa da enum tiplerinin anlaşılması açısından faydalı olacaktır.

Uygulama kodunu ve tüm blog projelerini buradan indirebilirsiniz.

Faydalı olması dileğimle,
Yaşar Şahin

using System;
using System.Drawing;
using System.Windows.Forms;

namespace EnumTypes
{
    public partial class frmEnum : Form
    {
        Colours _renkler;

        public frmEnum()
        {
            InitializeComponent();

            comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);
            _renkler = new Colours();

            comboBox1.Items.AddRange(_renkler.ColorNames());
        }

        void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = "";
            try
            {
                _renkler.Colour = ((ComboBox)sender).SelectedItem.ToString();
                _renkler.PaintMe(comboBox1);
            }
            catch (Exception ex)
            {
                toolStripStatusLabel1.Text = ex.Message;
            }
        }
    }
}

Hiç yorum yok:

Yorum Gönder