METODLAR
C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır 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 isi 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 }
Metotların yapısal olarak bir takım ozellikleri vardır. Bunlar; Erisim seviyeleri Geriye değer döndürmesi Aldığı parametreler
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. İşçiler 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.
Metot kullanımında dikkat edilecekler… Programın başlangıç metodu olan Main metodunu iki kez kullanılamaz. Metod isimleri numerik 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.
Void… Geri dönüş değeri olmayan metotlar “void” olarak tanımlanır Void… Geri dönüş değeri olmayan metotlar “void” olarak tanımlanır. “void” tanımlı bir fonksiyon için “return” kullanılamaz. Eğer giriş parametresi yoksa parantez içi bos bırakılır. private void goster() { MessageBox.Show("C# a hosgeldiniz"); } private void btnGoster_Click(object sender, EventArgs e) goster();
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;
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))); 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)
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. Or. public int topla (params int[] x) { // buraya dizi islemi icin kodlar gelir }
örnek 1 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;
Ö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("Ayse","Fatma","Hasan");
C# Ref – Out Özellikleri Ref ve Out, metodların kullanacakları parametrelerin ilk değerlerinin atanmasında yada atanmamasında kullanılan turlerdir. 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 isleminin gerceklestirilmis olması gerekmektedir. Metodun parantezinde Out kullanıldığında parametrenin ilk değerinin olması gerekmez, Atam islemi out tanımlanan metodun icerisinde yapılır. Metodun kullanıldığı yerde yapılmaz.
Ö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());