C# Metotlar 1
Belirli bir işi yapmak için oluşturulmuş kod bloklarıdır. Kod yazarken aynı işlem için tekrar tekrar aynı kodu yazmamıza gerek kalmaz. Bir metot oluştururuz. Ve o metotu çağırmamız yeterli olucaktır.
Metot yapısı bakalım..
(erişim belirteçleri) (Geri dönüş tipi) [Metotdumuzun Adı] ( parametre(ler) ){ //işlemlerimiz }
kullanmak istediğimiz vakit ise;
Metodumuzun Adı (parametre(ler)); şeklinde olacaktır.
erişim belirteçleri: İle metodumuza programın nereden erişilebileceğini söyleriz. Erişim belirteci yazma gibi bir zorunluluğumuz yok yazmazsak default olarak private olarak tanımlanacaktır bu da sadece tanımlandığı classdan erişilebilir olucaktır.
Geri dönüş tipini metodumuzun amacına göre belirleriz.
geriye değer döndüren metotlar ve geriye değer döndürmeyen metotlar
geriye değer döndüren metotlar: Metodumuzda tanımladığımız geri dönüş tipinde bize değer döndürür. Örneğin geri dönüş tipini int olarak tanımladık ve metodumuz bize geri döndüreceği değer int olucaktır.
geriye değer döndürmeyen metotlar: Metodumuz o işlemi yapar bitirir ancak geriye herhangi bir değer döndürmez. Metodumuzu tanımlarken geri dönüş tipi yerine void anahtar kelimesini yazmamız gerekmektedir.
parametre(ler): Metotlar parametre veya parametresiz de çalışabilirler. Tabi bu bizim ihtiyacımıza göre değişmektedir bunu metodumuzu yazmadan önce belirleriz.
static metotlar: new anahtar kelimesine ihtiyaç duymazlar bu sayede metodumuzun ismini yazarak çalıştırabiliriz. Instance sini almaya gerek yoktur. Örneklerle daha iyi görmüş olacağız.
Şimdi örnekler üzerinden gidelim.
Void Metotlar (Geri Değer Döndürmeyen) ve Static Metot
class Program
{
static void Main(string[] args)
{
//Zamanı göster metodumuzu tanımladık
//Onu çağıra bilmemiz için program classında instance almamız gerekmektedir.
//Program classımızdan instance alıyoruz.
Program p = new Program();
p.ZamaniGoster();
//metodumuz çalışıyor.
//Şimdi static olan metodumuz çağıralım.
//yapmamız gerek sadece metodumuzun ismini yazmak olucaktır.
ZamaniGosterStatic();
}
//void metotlar
//geriye herhangi değer döndürmez
//tanımlarken başına void anahtar kelimesini yazarız
//erişim belirteci tanımladığımız için private oluyor bu da bu classdan başka erişim sağlanamayacağı anlamına gelmektedir.
void ZamaniGoster()
{
Console.WriteLine(DateTime.Now);
}
//Static bir metot örneği
static void ZamaniGosterStatic()
{
Console.WriteLine(DateTime.Now);
}
}
yukarıda görmüş olduğumuz gibi metotdumuzu tanımladık ve çalıştırdık ekrana zamanı yazıcaktır. Ve de aynı zamanda parametreye bir ihtiyaç duymazdığımız için parametre kullanmadık.
Geri Değer Döndüren Metotlar
class Program
{
static void Main(string[] args)
{
//ToplaMetodum int değer döndürdüğü için
//int bir değişkene atama yapabilirim.
int sonuc = ToplaMetodum(3 , 4);
//ekrana yazdıralım
Console.WriteLine(sonuc);
}
//Topla işlemi yapan bir metot
//bize geri değer olarak int döndürsün
//geriye bir değer döndüreceğim için
//return anahtar kelimesini kullanmalıyım yoksa hata vericektir.
//ve toplama işlemi yapacağız için sayılara ihtiyaç duyabiliriz ve bunlarıda parametre olarak yazalım
//int a ve int b olarak iki parametre tanımladık
//return a+b; geriye döndüreceğiz
static int ToplaMetodum(int a, int b)
{
return a + b;
}
}
Basit olarak birkaç örnek gösterdim. Biraz da metot ile ilgili özelliklerinden bahsedelim:
1-)Metotlara isim verirken, değişken isimlendirme kuralları aynı şekilde burada da geçerlidir.
2-)Eğer bir metodumuz geri dönüş değeri mevcutsa geriye return anahtar kelimesi ile mutlaka o değerde geri döndürülmelidir aksi takdirde programımız hata verecektir.
3-)Metodumuz geriye değer döndürmeyecek ise erişim belirteçlerinden sonra void anahtar kelimesini yazmalıyız. Ve bu metotlarda return anahtar kelimesini kullanmamız yasaktır. Kullanırsak hata verecektir.
4-)Metodumuz parametre alıyorsa aldığı parametre tipi ve sayınca parametre gönderilmelidir yoksa hata verecektir. Örnekle açıklarsak int Topla(int a, int b) metodumuz iki parametre almaktadır. Biz topla metoduna Topla("s","a"), ya da Topla(2) yazarsak programımız hata verecektir. Çünkü Topla metodumuz 2 parametre almakta ve bunlar int değerindedir. Ve biz 2 parametre göndermeliyiz ve bunlar int değerinde olmalıdır.
5-)Metotlarımız parametrede almaya bilir ve bu durumlarda bizde dikkat etmemiz gereken nokta metodumuza parametre göndermemek olacaktır.
6-)Metot içinde metot bildiremeyiz. Hata verecektir ayrı ayrı metotları bildirmeliyiz.
7-)Metodumuzun içinde tanımladığımız yazdığımız değişkenler metot içinde kalır ve metot dışında çalışmaz.
En basit olarak bir örnek daha yapacak olursak 4 işlem örneğini yapalım farklı olarak burada kendi yazdığımız metolarımızı kullanmış olacağız.
class Program
{
static void Main(string[] args)
{
Console.Write("İşlem yapıcağınız birinci sayıyı giriniz =>");
int sayi1 = Convert.ToInt16(Console.ReadLine());
Console.Write("İşlem yapıcağınız ikinci sayıyı giriniz =>");
int sayi2 = Convert.ToInt16(Console.ReadLine());
Topla(sayi1,sayi2);
Cikar(sayi1, sayi2);
Carp(sayi1, sayi2);
Bolme(sayi1, sayi2);
}
static void EkranaYaz(string metin)
{
Console.WriteLine(metin);
}
static void Topla(int a,int b)
{
EkranaYaz("Sayıların Toplamı : "+ (a+b));
}
static void Cikar(int a,int b)
{
EkranaYaz("Sayıların Farkı : "+(a-b));
}
static void Carp(int a, int b)
{
EkranaYaz("Sayıların Çarpımı : "+(a*b));
}
static bool BolmeKontrol(int a)
{
if (a != 0)
return true;
else
return false;
}
static void Bolme(int a,int b)
{
if (BolmeKontrol(b))
{
EkranaYaz("Sayıların Bölümü : " +(float)a/b);
}
else
{
EkranaYaz("Bölen sayı 0 olamaz");
}
}
}