
Belirli işlemleri yerine getirmek amacıyla metotları kullanırız. Sürekli kullanmamız gereken, yani tekrarlayan kodlarda metotları kullanarak kod fazlalığını önleriz. Metotları belirlenen kurallara göre çağırırız ve kullanırız. Metotların temel yapısı şu şekildedir.
<Erişim Belirleyici> <Return Tipi> Metot Adı (Parametre) {
// Kod Bloğu
}
Erişim belirleyici olarak private, public, static vb. kullanabiliriz ancak eğer erişim belirleyici girmezsek otomatik olarak metodu private olarak kabul eder. Eğer geriye bir değer döndürmesini istiyorsak mutlaka Return Tipi belirtilmelidir (string, int, double …). Geriye değer döndürmesini istemiyorsak void kullanılır. Geriye döndürmek istediğimiz değeri kod bloğu içerisinde return ile belirtmeliyiz.
4 tip metot bulunmaktadır;
- Geriye Değer Döndürmeyen ve Parametre Almayanlar
- Geriye Değer Döndürmeyen ve Parametre Alanlar
- Geriye Değer Döndüren ve Parametre Almayanlar
- Geriye Değer Döndüren ve Parametre Alanlar
- Geriye Değer Döndürmeyen ve Parametre Almayan Metotlar

Yukarıda ilk olarak bir public tipinde metod tanımladık ve bununla birlikte void kullanarak return değeri olmadığını belirttik. Herhangi bir parametre değer olmayacağı için () parantezi kullandık. Butonun click olayında bu metodumuzu çağırdığımızda groupBox1 visible özelliği false edilir.
2. Geriye Değer Döndürmeyen ve Parametre Alan Metotlar

Yukarıda ilk olarak bir public tipinde metod tanımladık ve bununla birlikte void kullanarak return değeri olmadığını belirttik. Herhangi bir parametre değer olmayacağı için () parantezi kullandık. Butonun click olayında getName metodunu bir parametre ile çağırdığımızda getName metodunun text parametresine bunu yazar yani sonuç olarak textBox2.Text = textBox1.Text olur.
3. Geriye Değer Döndüren ve Parametre Almayan Metotlar

Yukarıda ise aynı şekilde tanımlamalarımızı yaptık ve ValueControl metodunu parametresiz olarak çağırdık. Çağırdığımız değeri textValue içerisine aldık. Return olarak “Istanbul” değeri label1.Text içerisine aktarılır.
4. Geriye Değer Döndüren ve Parametre Alan Metotlar

Yukarıdaki örnekte ise aynı şekilde tanımlamalarımızı yaptık ancak farklı olarak hem geri değer döndürdük hem de parametre verdik. Bu şekilde verdiğimiz 2 parametrenin toplamını return olarak metottan almış olduk.
Şimdi ise biraz overloading konusu üzerinde duralım…

Yukarıda tek bir metodu 3 farklı şekilde tanımladık. Ancak aradaki fark parametrelerdir. Normalde aynı metodu çağırdığımızda hata verecektir ancak biz parametre adedi olarak farklı sayıda verirsek burada hata almayız. Yukarıda ilk metot üzerinde parametre kullanılmamıştır. 2. metotta 1 adet parametre ve 3. metotta 2 adet parametre kullanılmıştır. Butonun click olayında ise bu metotlardan ilkini çağırdık ve bunu label1.Text içerisine aktardık. Aynı şekilde diğer metotlar içinde bunu gerçekleştirebiliriz.
Metotları tanımlarken erişim belirleyicilerden bahsetmiştik, bunları 5 ayrı kategoriye ayırabiliriz;
- Private (Gizli)
Bir değerin veya metodun private olarak tanımlanması demek, onun sadece kendi sınıfı içerisinde ulaşılabileceği anlamına gelmektedir. Program içinde kesinlikle değiştirilmemesi gereken kodlarda kullanılmaktadır. Private varsayılan erişim belirleyici olarak kullanıldığından bir değeri veya metodu tanımlarken erişim belirleyicisini belirtmezsek bunu otomatik olarak private olarak görür. - Public (Genel)
Bir değerin public olarak belirtilmesi o değerin kod içinde herhangi bir yerden erişilebilir durumda olmasını sağlamaktadır. Public erişim belirleyici tipinde hiç bir kısıtlama yoktur. - Protected (Korunumlu)
Kod içinde bir değerin protected olarak tanımlanması o değere, bulunduğu sınıf ve ondan türetilen diğer sınıflar içinden erişilebilir olduğunu göstermektedir. Protected bir anlamda, public ve private erişim belirleyicilerinin birleşimi olarak görülebilmektedir. - Internal (İçsel)
Internal olarak tanımlanan bir değer; aynı program içerisinden erişilebilir, fakat farklı bir program içerisinden erişilemez durumdadır. Program içerisinde herhangi bir kısıtlaması yoktur. - Protected Internal (İçsel Korunumlu)
Protected internal olarak tanımlanmış değer, tanımlandığı sınıfın içinden ve ondan türetilen sınıfların içinden erişilebilir durumdadır. Türetilen sınıfın aynı program içinde olmaması sorun teşkil etmez.