Metotları kısaca açıklamak gerekirse, belirli bir işlevi yerine getirmek için hazırlanmış belir bir kod bloğunu bir isim altında toplayıp. Kodu çalıştırmak istediğimiz yerde vermiş olduğumuz isimle çağırıp içerisinde ki kodun yeniden kullanılmasına izin veren programlama yapılarıdır.
Metotlar matematikteki kümelere benzerler. Örneğin matematikte D = { f, a, t, i, h } şeklinde bir küme tanımlayalım. Yani beş elemanlı bir küme tanımlamış olduk. Şimdi biz bu küme ile bir başka yerde işlem yapmak istersek tek tek elemanlarını yazmak yerine “D” kümesi şeklinde sesleniriz. Burada seslendiğimiz “D” kümesi artık bize kümenin içerisindeki “f, a, t, i, h” karakterleri temsil eder. Metotlarda bu şekildedir Örneğin: IsımYaz() { C#’da ekrana isim yazma kodları } şeklinde bir metot tanımladık yani metot ismi: IsımYaz metot içeriği: ekrana isim yazan kodlar. Artık nerede “IsımYaz()” desek bize ekrana isim yazan kodları döndürecektir.
Her metot bir isim ve bir de kod bloğundan oluşur. Metot isminin altına açılan {} süslü parantezlerin içerisine gerçekleştirilmesini istediğimiz kod bloklarını yazarız. Metotların çalışma şekli bu şekildedir.
-Metotlar belirli bir görevi yerine getirmenin yanı sıra, kod bloğu içerisinde kullanılması için girdi olarak veri aktarabilir veya metot içinde çalışan kodların sonucunda bilgi döndürebilir.
– Metotlar kodun yeniden kullanılabilirliğini sağlarlar. Ayrıca tek bir yerden değişiklik yaparak, kullanıldığı her yerde akış mantığını değiştirebilirler.
– Metotlar, sadece bir sınıfın yada bir yapı içerisinde oluşturabilirler. Bağımsız olarak bir isim alanı altına yada sınıf ve yapı dışındaki bir tipin içerisine metot yazılamaz.
Metot Oluşturma
ErişimBelirleyicisi Niteleyici(Varsa) DonusTipi MetotAdi (Parametre(Varsa))
{
//Metot Çağrıldığında Çalışacak Olan Kodlar Buraya Yazılır.
}
Oluşturduğumuz metodu kullanmak istediğimizde ise aşağıda ki gibi çağırmamız gerekmektedir.
MetotAdi(Parametre(Varsa));
Metot Bileşenleri
1) Erişim Belirleyicisi: Aslında erişim belirleyicisi başlı başına bir konudur. C# diline özel diğer yapılarla da kullanılan bir bileşendir. Erişim Belirleyicisi, bir metodun sınıf veya yapı üyesi olmasının sonucu belirtilmesi gereken bir anahtar kelimedir. Metot konusunda ikisinden bahsetmek yeterli olacaktır. Private ve Public. (Metot yazarken erişim belirleyicisi belirtilmezse varsayılan değer private olarak atanır.)
Private anahtar kelimesi: erişim belirleyicisi yazıldığı metodun sadece yazıldığı sınıf veya yapı içerisinde çağrılıp kullanılabileceği anlamı taşır.
Public anahtar kelimesi: erişim belirleyicisi yazıldığı metodun her yerden çağrılıp kullanılabileceği anlamı taşır.
2) Niteliyici: Opsiyoneldir. Kullanılabilir de kullanılmayabilirdi. İleri seviye programlamada kullanılan static, abstract, sealed, virtual kelimelerinen birini temsil eder. Method içerisinde genellikle static kullanılır.
* Static anahtar kelimesini kısaca açıklamak gerekirse oluşturduğunuz metodu bellekte sabit bir hale getirir. Bu şekilde metodu kullanımını kolaylaştırsa da bellekte performans düşüklüğü yaratır. Dikkat edilmesi gereken diğer nokta Static anahtar kelimesi kullanılmadan metot oluşturulursa metot çağırmada bağlı olduğu class sınıfından new methodu ile tanımlanarak çağrılması gerektiğidir.
3) Dönüş Tipi: Metodun çalışması sonucu kendisini çağırıp kullanana göndereceği verinin tipini belirler. Bunlar int, string gibi önceden tanımlı tipler olacağı gibi kendi yazdığımız bir tip türünde olabilir. Eğer geriye değer döndürmeyen bir metot yazılırsa void olarak tanımlanır.
4) Metot Adı: metodu çağrılırken kullandığımız anahtar kelimedir.
5) Parametre Listesi: opsiyoneldir. Bir metot parametre alabilir de alamayabilir de bu yazılım geliştiricinin kendisine bırakılmış bir durumdur. Kullanılacak parametreler, metodun yazım aşamasında metot adından sonra açılan parantezin ardından sırayla tip adı ve değişken adı olacak şekilde tanımlanır. Varsa diğer parametreler aralarında virgül olacak şekilde aynı kural takip edilerek yazılır. Parametre programı çağırdığımız zaman metoda göndermemiz gereken değişkenlerdir diyebiliriz. Metodumuz gelen parametre doğrultusunda kod bloğu içerisinde işlem yapacaktır.
6) Metot Bloğu: metot çağrıldığında çalışacak olan kodu temsil ederi. Süslü parantezlerle sınırlıdır.
Metot Yazımı ve Kullanımı
using System.Text; using System.Threading.Tasks; namespace Donguler { class Program { public static void IsimYaz() { Console.WriteLine("Fatih ALKAN"); } static void Main(string[] args) { IsimYaz(); } } }
Parametreli Metot Yazımı
using System.Text; using System.Threading.Tasks; namespace Donguler { class Program { public static void IsimYaz( string _isim) { Console.WriteLine(_isim); } static void Main(string[] args) { IsimYaz("Fatih ALKAN"); } } }
Yukarıda ki metot örnekleri geriye değer döndürmeyen metotlara örnektir. Yani metot içerisinde ki kod bloğunda ki görevi yapar ve işlemi bitirir. Bir de geriye değer döndüren metotlar vardır. Bunlar metot içerisindeki kod bloğu çalıştıktan sonra kullanıcıya bir değer döndürür. Burada dikkat edilmesi gereken şudur. Eğer metodumuz geriye değer döndüren bir metot cinsin deyse geriye döndüreceği değeri “return” anahtar kelimesi kullanarak döndürmek gerekir.
using System.Text; using System.Threading.Tasks; namespace Donguler { class Program { static int Topla( int _birinciSayi, int _ikinciSayi) { int Sonuc = _birinciSayi + _ikinciSayi; return Sonuc; } static void Main(string[] args) { Console.WriteLine(Topla(3,5)); } } }
Metotlarda “return” anahtar kelimesinin bir başka kullanım şekli daha vardır. Normalde metot içerisinde ki kod tamamlanıp ondan sonra çıktısı servis edilir. Bazı durumlarda yazdığımız kodun hepsinin tamamlanmasını istemeyebiliriz. Belirli şartlarda durumunda kodumuzu istediğimiz yerden geri döndürebiliriz. Bu tip bir durumda “return” anahtar kelimesi kullanılır. Mesela aşağıdaki örnekte ekrana yazı yazan bir metot yazdırdık yazılacak nesneyi parametreyle istedik. Ama parametremiz boş gelirse direk “Fatih ALKAN” yaz ve metottan çık dedik. Bu işlemin sonucunda ekran parametre boş gelirse önceden tanımladığımız değer yazılıp işlem sonuçlandırılacaktır.
using System.Text; using System.Threading.Tasks; namespace Donguler { class Program { public static void IsimYaz(string _isim) { if (_isim == "") { Console.WriteLine("Fatih ALKAN"); return; } Console.WriteLine(_isim); } static void Main(string[] args) { IsimYaz(""); } } }
Params Anahtar Kelimesinin Kullanımı
Bazı durumlarda metot yazılırken metodun kaç tane parametre geçireceği bilinmez. Şu ana kadar öğrendiklerimiz çerçevesinde bunu halletmenin bir yolu yoktur. Ancak metotlara herhangi bir tipten bir dizi aktarılması halinde bu sorun kısmende olsa çözülebilir. Bu iş için C#, metoda parametre olarak bir dizi alınmasını ve dizinin önüne “params” anahtar kelimesinin getirilmesinin yeterli olacağını söyler.
using System.Text; using System.Threading.Tasks; namespace Donguler { class Program { static void ParametreSayisi(params int[] dizim) { for (int i = 0; i < dizim.Length; i++) { Console.WriteLine("Değerleriniz: {0}", dizim[i]); } Console.WriteLine("\n{0} adet parametre girdiniz...", dizim.Length); } static void Main(string[] args) { ParametreSayisi(3, 4, 5, 6, 7, 8, 10, 25, 53); } } }
Static Anahtar Kelimesi Kullanılmadığı Zaman
using System.Text; using System.Threading.Tasks; namespace Donguler { class Program { int Topla(int a, int b) { int c; c = a + b; return c; } static void Main(string[] args) { Program prg = new Program(); Console.WriteLine(prg.Topla(5, 10)); } } }
One comment
Comments are closed.