Ders 8: Metotlar Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com
Metotlar C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır. Bir nesnenin veya sınıfın programı yürütmesi için kullandığı bir C# nesnesidir. Program içerisinde yürütülen kodlar bu metotlar içerisinde bulunur. Program yazarken belirli bir işi yapan kod bloğunu bir kaç kez kullanmak gerekebilir. Bunun için aynı kod bloğunu tekrar yazmak yerine bir metot olarak hazırlanır ve ihtiyaç duyulduğunda kullanılır. Böylece zamandan tasarruf sağlanır Ör. private void button1_click(object sender, EventArgs e) int a = 22; // Bütün kodlar buradaki metotlar arasına yazılır 2
Metotların yapısal olarak bir takım özellikleri vardır. Bunlar; Erişim seviyeleri Geriye değer döndürmesi Aldığı parametreler 3
Erişim seviyeleri Public = public seviyesindeki bir metoda aynı sınıf içerisinden veya dışarıdaki sınıflardan erişmek ve değer almak mümkündür. Private = public seviyesinin tam tersi sınıf üyelerinin hiç biri bu seviyedeki bir metoda ulaşamaz. Örn. Đşciler adındaki bir sınıf içerisinde maaş adında bir private bir metot tanımladınız bu metoda sınıf dışında erişmek mümkün değildir. Protected = Bu erişim seviyesi Public ve Private arasında orta seviye erişime sahip bir metottur. 4
Metot kullanımında dikkat edilecekler Programın başlangıç metodu olan Main metodunu iki kez kullanılamaz. Metod isimleri nümerik karakter ile başlamaz. Metod ismi büyük ve küçük harfe duyarlıdır. Metod isimlerinde boşluk kullanılmaz. Void kullanıldığı zaman geriye değer döndürmez. Metodların parametre bilgisi varsa eksiksiz girilmelidir. Bir metod bloğu içinde başka bir metod tanımı yapılamaz. Değer döndürmede return anahtar sözcüğü kullanılır. 5
Void Geri dönüşd değeri eri olmayan metotlar void olarak tanımlan mlanır. void tanıml mlı bir fonksiyon için i in return kullanılamaz. lamaz. Eğer giriş parametresi yoksa parantez içi i i boş bırakılır. r. private void goster() MessageBox.Show("C# a hoşgeldiniz"); private void btngoster_click(object sender, EventArgs e) goster(); 6
Metotlara parametre gönderme private void Form1_Load(object sender, EventArgs e) public void yazdir(string yazi) MessageBox.Show(yazi); private void btngoster_click(object sender, EventArgs e) int sonuc = topla(12, 24); yazdir(sonuc.tostring()); public int topla(int a, int b) return a + b; 7
C# Metot Overloading (Aşırı yükleme) Aynı metodun birden fazla versiyonun olmasıdır. Mesela toplama işlemini yapan birden fazla metodun olması. C# içerisinde birden fazla aynı metodu kullanmak için metot overloding (aşırı yükleme) yapısı vardır. public void yazdir(string yazi) MessageBox.Show(yazi); private void btngoster_click(object sender, EventArgs e) yazdir(convert.tostring(topla(12.5,11.7))); 8 public int topla(int a, int b) return a + b; public int topla(int a, int b, int c) return a + b + c ; public double topla(double a, double b) return a + b;
C# Params (Sınırsız sayıda parametre alma) Normal metot tanımlamadan belirlenen sayıda parametrelerle işlem yapılmaktadır. Bu kısıtlayıcı bir yöntemdir. Kullanıcının gönderdiği parametreler farklı olabilir. Yani kullanıcı belirsiz sayıda parametrelerle işlem yapmak isteyebilir. Bu durumlarda parantezin içerisinde params ifadesi kullanılır ve parantez içerisine tanımlanan değişken dizi değişken olarak tanımlanır. Ör. public int topla (params int[] x) // buraya dizi işlemi için kodlar gelir 9
Örnek 1 10 public void yazdir(string yazi) MessageBox.Show(yazi); private void btngoster_click(object sender, EventArgs e) // yazdir(convert.tostring(topla(12.5,11.7))); yazdir(convert.tostring(carp(12.2, 11.3))); public int carp (params int[] x) int tmp = 1; foreach(int a in x) tmp *=a; return tmp; public double carp(params double[] x) double tmp = 1; foreach (double a in x) tmp *= a; return tmp;
Örnek 2 public void yazdir(string yazi) MessageBox.Show(yazi); public void isimler(params string[] degisken) foreach(string a in degisken) yazdir(a); private void btngoster_click(object sender, EventArgs e) isimler("ayşe","fatma","hasan"); 11
C# Ref Out Özellikleri Ref ve Out, metodların kullanacakları parametrelerin ilk değerlerinin atanmasında yada atanmamasında kullanılan türlerdir. Metodun parantezinde Ref kullanıldığında parametrenin ilk değerinin tanımlandığı yerde mutlaka atanması gerekmektedir ve Ref tanımlanan metoda gelen parametrenin bir değerinin olması gerekmektedir, yani bir atama işleminin gerçekleştirilmiş olması gerekmektedir. Metodun parantezinde Out kullanıldığında parametrenin ilk değerinin olması gerekmez, Atam işlemi out tanımlanan metodun içerisinde yapılır. Metodun kullanıldığı yerde yapılmaz. 12
Örnek (Ref-Out) public void metodref(ref int a) // Burda a parametresine bir değer vermek zorunda değiliz a = 24; // eğer a ya değer vermezsek programdan gelen parametrenin değeri aynen geri döner public void metodout(out int b) // Burda b parametresine bir değer vermek zorundayız b = 34; private void btnrefout_click(object sender, EventArgs e) int a = 5; metodref(ref a); yazdir(a.tostring()); int b; metodout(out b); yazdir(b.tostring()); 13
Kaynaklar http://www.netogretim.com/dersizle.aspx?id=3&c# http://www.tahribat.com/doc.asp?sayfa=2&docid=217 14
TEŞEKKÜRLER www.barisgokce.com 15