C# _ Methods
Merhaba arkadaşlar programları yazarken çoğu kez bir işlemi birden fazla yerde yapmamız gerekebilir. Bu da her seferinde aynı kodu yazmak anlamına geliyor ve buda bize hem zaman kaybı hemde kod karışıklığına neden olacaktır. Peki buna çözüm olarak yapacağımız işlemle alakalı koda bir isim versek ve kullanmak istediğimiz yerde o kadar kodu tekrar tekrar yazmayıp sadece ismiyle çağırsak nasıl olur ? Bence süper olur 😀
Metotlar işte bu işlemi yaparlar bir isimle çağırılarak içersindeki işlemleri tek satırda çağırabilmemizi sağlar. Metotları bir işci olarak düşünebiliriz biz ona ne iş yapması gerektiğini söyleriz ve ismini söylediğimizde o iş yapılır.
Örnek olarak bir öğrenci takip programı yaptığımızı düşünelim. Bu program için ilk önce düşünülmesi gereken form Öğrenci Kayıt formudur ve bu form basit olarak aşağıdaki gibi bi görüntüye sahip olacaktır.
En basit işlemi düşünecek olursak doldurulmuş olan textBox ların temizlenmesini istiyorum ve bunun için form içersine bir Temizle butonu yerleştiriyorum ve bu butonda bütün butonları temizliyorum.
private void btnTemizle_Click(object sender, EventArgs e){
txtAd.Clear(); txtSoyad.Clear(); txtTcNo.Clear(); txtDogumYeri.Clear(); txtVeliAd.Clear(); txtVeliSoyad.Clear(); txtTelefon.Clear(); } |
Çalıştırdığımda kodlarımın çalıştığını görüyorum tüm alanlar temizleniyor ;). Buraya kadar bir sorunumuz yok. Peki Kaydet butonuma bastığımda kaydetme işlemleri tamamlandıktan sonra kullanıcının yeni kayıt ekleyebileceğinide hesaba katıp kaydetme işleminden sonrada textBoxları temizlememiz gerekiyor. Aynı kodları tekrar yazarsak sorun kalmaz ama sadece bu kadarla kalmasak ve bu formda 2 den fazla yerde textBoxları temizlemek istesek her seferinde bu kodları tekrar tekrarmı yazıcaz ? Diyelimki yazdık program çalışıyor. Daha sonra okul yönetimi bizden 2 textbox daha koymamızı istedi. Biz yazdığımız Clear kodlarına 2 satır daha eklememiz gerekicek ama bir çok yerde kullandığımız için bir tanesini bile unutsak sıkıntı çıkacaktır. Bu kodları merkezi bir yerde toplasak ve ihtiyacımız olduğunda sadece ismi ile çağırsak nasıl olur ? 😉
Metotda değişiklik yaptığımızda tüm farklı yerlerde kullandığımız kodlarda değişecektir. Gelin nasıl yapıyoruz bu işlemi görelim . Bir Metot tanımlayarak aynı işlemi birden fazla yerde yapalım 😉
Void MetotAdi()
{
Yapılacak işlem
}
private void btnTemizle_Click(object sender, EventArgs e){
Temizle(); } private void btnKaydet_Click(object sender, EventArgs e) { Temizle(); } private void Temizle() { txtAd.Clear(); txtSoyad.Clear(); txtTcNo.Clear(); txtDogumYeri.Clear(); txtVeliAd.Clear(); txtVeliSoyad.Clear(); txtTelefon.Clear(); } |
Görüldüğü gibi tek bir metodu yani işçimi sadece adını çağırarak işimi yaptırabiliyorum. 😉
Void metotlar örnekteki gibi sadece içersinde tanımlanan işi yapar. Geriye bir değer döndürmezler.
Metot içersinde yapılan işlem sonucu geriye bir değer döndürmek istiyorsak geriye dönen değer tipinde bir metot oluşturmamız gerekir. Yani işçimize işini yap ama bana yaptığına dair bilgi getir diyoruz. J
Örnek olarak iki sayıyı toplayarak sonucu geri deger olarak döndüren bir metot yazalım.
private void btnTopla_Click(object sender, EventArgs e){
MessageBox.Show(Topla().ToString()); } int Topla() { int sayi1 = 5; int sayi2 = 6; int sonuc = sayi1 + sayi2; return sonuc; } |
Gördüğümüz gibi içeride yapılan işlemin sonucu metodun tipinde olmak zorunda.
Birde içeriye değer gönderebildiğimiz metot tipleri varki buda metot – işçi metaforunu tamamlayan unsurlardan biz işçimizin eline malzemeleri veriyoruz ona sadece o malzemelerle ona söylenmiş olan işi yapmak kalıyor. Ve yine bize bu malzemelerle yaptığı işin sonucunu dönmek zorunda.
private void btnTopla_Click(object sender, EventArgs e){
MessageBox.Show(Topla(5,6).ToString()); } int Topla(int sayi1 , int sayi2) { int sonuc = sayi1 + sayi2; return sonuc; } |
Ne kadar kolay değilmi ? 😉
Bir sonraki yazımızda görüşmek üzere.