30 Temmuz 2012 Pazartesi

C# ile Extension Methods(Genisletilir Methodlar) Yazimi ve Kullanimi


Random Classini kullanmayanimiz yoktur.  Rastgele.Next(1,100) diyerek hemen rastgele bir sayi olustururuz.
Üretmemiz gereken sayinin tek sayi olmasi istenirse, bu islemi direkt olarak yapacak bir Random classi methodu yoktur.  Yapilacak islem bir fonksiyon yazarak türetilen sayi için sürekli bir karsilastirma yaparak tek olmasini saglamaktir. Herhalde asagidaki gibi bir kullanim sizin de akliniza gelmistir.
 
        private int tekSayiTuret(int min, int max)
        {
            Random rastgele = new Random();
            int turetilenSayi=rastgele.Next(1,100);
            while (turetilenSayi % 2 == 0)
            {
                turetilenSayi = rastgele.Next(1,100);
            }
            return turetilenSayi;
        }
 
 
Biz bu islemi Extension method yazarak çözecegiz. Peki neden extension method yazayim ki diye sorarsaniz, nedeni sudur. Extension methodunuz sanki Random Classinin methoduymus gibi çalisir. Örnegi takip ediniz.
1.Adim: Bir adet Windows Forms Application olusturunuz ve formunuza iki adet Button ekleyiniz.
2.Adim: Projenize bir adet Class ekleyiniz.
3.Adim: Classiniza asagidaki methodlari ekleyiniz.
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace WindowsFormsApplication25
{
 
    public static class RandomExtralari
    {
        public static int tekSayiTuret(this Random sayi, int min, int max)
        {
            Random rastgele = new Random();
            int turetilenSayi=rastgele.Next(1,100);
            while (turetilenSayi % 2 == 0)
            {
                turetilenSayi = rastgele.Next(1,100);
            }
            return turetilenSayi;
        }
        public static int ciftSayiTuret(this Random sayi, int min, int max)
        {
            Random rastgele = new Random();
            int turetilenSayi = rastgele.Next(1, 100);
            while (turetilenSayi % 2 == 1)
            {
                turetilenSayi = rastgele.Next(1, 100);
            }
            return turetilenSayi;
        }
    }
}
 
 
Ben iki adet method yazdim. Birincisi ile tek sayi, ikincisi ile çift sayi türettiriyorum. Bunu yaparken iki seye dikkat etmeniz gerekir.
·         * Birincisi methodlarinizi ve classinizi public static hale getirmeniz gerekir.
·         * Ikini konu ise methodlariniza ait imzada genisletilecek olan Class’in hangisi oldugunu belirtmek olacaktir. (Bizde Random Class’i) Asagidaki satira dikkat ediniz.
             public static int tekSayiTuret(this Random sayi, int min, int max)
       
5.Adim: Simdi Formumuza geçelim ve butonlara ait click eventlerine asagidaki kodlari ekleyiniz.
 
 
        private void button1_Click(object sender, EventArgs e)
        {
            Random yeni = new Random();
            MessageBox.Show(yeni.tekSayiTuret(1,100).ToString());         
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Random yeni = new Random();
            MessageBox.Show(yeni.ciftSayiTuret(1, 100).ToString());
        }
 
 
Random Classina intellisense ile tekSayiTuret ve ciftSayiTuret methodlarinin eklendigine dikkat ediniz.
 
 
Artik birinci butona tikladigimizda tek sayi, ikinci butona tikladigimizda ise çift sayi türetilecektir.http://www.yazilimdevi.com/Makaleler-146-cSharp-ile-extension-methodsgenisletilir-methodlar-yazimi-ve-kullanimi.aspx

Hiç yorum yok:

Yorum Gönder