C# Void ve Değer Döndüren Metotlar
C#.Net meraklısı yazılımcılara selamlar olsun :)
Bugünkü makalemizin ana konusunu aslında String sınıfı olarak yazacaktım ki son anda karar değiştirip güzel ve eğlenceli bir konuya ayırmak istedim,dolayısıyla bu makalemizde C# metotlarından bahsedeceğiz.
Hemen hemen her programlama dilinde olan ve bazılarında fonksiyon gibi farklı sözcüklerde anılan metot kavramı bir programın yaptığı iş parçacıklarıdır diyebiliriz.Metotlar hakkında yanlış hatırlamıyorsam ilk C# makalemizde bahsetmiştim ve metotlar sınıfların alt kümesi,sınıflar da namespace (isimuzay) kümesinin alt kümesidir desem kafanız karışabilir o yüzden aşağıdaki resmi incelemenizde fayda var :)
Şimdi tekrar metotlardan bahsedelim,metotlar içerisine C# kodlarını yazdığımız kod bloklarıdır ve metotlar sayesinde aynı işlevlere sahip binlerce satırı bir noktada toplayıp olası istediğimiz her kod satırında tek satırda çalıştırmamıza olanak
sağlamaktadırlar.
Metotla ilgili örnek uygulamalar yapmadan önce biraz daha dır dır edip kafanızı şişirmek istiyorum :)
Metotlar;
- içeriğinde kod parçacıkları bulunduran yapılardır,
- iş yapan (void) ve değer döndüren (return) olmak üzere ikiye ayrılırlar,
- bir metot bir defa yazılır ancak sonsuz sayıda yeniden kullanılabilir,
- nesne yönelimli programlama (object orianted programming - oop) konusudur,
- çok dinamik ve esnek yapıda oldukları için sonsuz sayıda parametre alabilir
ve bu parametreleri kendi içerisinde işleyebilirler.
Şimdilik yukarıdakiler aklıma geliyor ancak şimdiye kadar makalelerimizde metotları sürekli kullanıyorduk.Hatırlarsanız hep MessageBox sınıfının Show() metodu ile ekrana yazılar yazdırıyorduk ;)
Biz yazılımcılar özgür ruhlu insanlarız ve programlama adına sınırlamalara denk gelirsek elimiz ayağımız kilitlenir proje üretemeyiz.O yüzden sağolsun Microsoft, C# konusunda biz yazılımcılara sadece .Net metotlarını vermekle
kalmayıp kendi metotlarımızı yazmamıza olanaklar sunmuştur.
Bu kadar çene çalmak yeter diyorum ve direkt konuya giriyorum artık :)
Metotların iş yapan ve değer döndüren (int,string gibi) olarak ikiye ayrıldığını söylemiştimi,öncelikle iş yapan metodun ne olduğunu öğrenelim.
İş yapan metotlar içerisine yazılan kodları yalnızca çalıştırır ve herhangi bir değer döndürmezler,anahtar kelimesi "void" deyimidir.Bir void metot oluşturmak için en basit anlamda;
void MetotAdi()
{
//çalıştırılacak kodlar
}
sözdizimini kullanırız.
Şimdi Visual Studio'yu açarak yeni bir Windows Form projesi oluşturalım ve C# dilinde basit bir metot yazalım:
Metot yazarken ilk dikkat etmemiz gereken metodu nereye yazmamız gerektiğidir,dikkat ederseniz sarı renklerle yukarıdan aşağıya işaretlediğim noktalar var ve "Metotlar" olarak gösterdiğim isim-uzay yani programın en geniş kapsam alanıdır.
İkinci işaretlediğim "Form1" ise programın sınıfıdır ve bu sınıf altında daha önce kullandığımız Form1_Load metodu yer almaktadır ve yine dikkat ederseniz programın ilk çalışma anı da bir metotdur :)
"BirseyYap()" metoduna dikkat ederseniz Form1_Load metodunun hemen bittiği noktadan başlamaktadır çünkü sınıflar içerisinde sonsuz sayıda metot yazılabilir o yüzden namespace-sınıf-metot hiyerarşisine dikkat ederek yazdık.
Metodumuz iş yapan bir metot olduğu için "void" anahtar sözcüğünü belirttik ve metot adını yazdıktan sonra parantez açıp kapattık (bir sonraki makalemizde parantez içerisine parametreler yazacağız) ardından scope dediğimiz süslü parantezler açıp kapattık.
İşte bu scopelar arasına kodlarımızı yazacağız ve program içerisinde metodun adını nereye yazarsak yazalım yazacağımız bu kodlar çalışacak.
Şimdi metodumuzun içerisine çok basit bir kod yazalım:
Metodumuzu yazdık ve içerisine MessageBox.Show() metodu ile ekrana mesajımızı verdirmek için programımızı çalıştırıyoruz:
ama o da ne metodumuzu yazdık ama çalışmadı.Bunun sebebi yazdığımız metodu hiçbir yerde çağırmadık ve bu yüzden ekranda mesaj görmedik.Varsayılan olarak bir metodu çalıştırmak için;
MetotAdi();
şeklinde yazmak yeterlidir.Bu örneğimizde yazdığımız metodun programın başlama anında çalışmasını sağlamak için Form1_Load metodu içerisinde çağıralım:
Gördüğünüz gibi programın çalışma anında metodumuz çalıştırıldı.Dikkat ederseniz (bu sözü çok mu sık kullanıyorum acaba :) ) Form1_Load'ın bir metot olduğunu söylemiştik ve şu an metot içerisinde metot çalıştırmış olduk.Bu sayede iç içe C# metodunun çalıştırılabildiğini öğrenmiş olduk :)
Bir metodun nasıl yazıldığını ve nasıl çağırıldığını gördük,peki sadece programın çalışma anında mı metotlar çalışır?
Tabiki hayır! Yazılan bir metodu varsayılan olarak heryerde çalıştırabilirsiniz,örneğin formumuza bir buton ekleyelim:
Butonumuza çift tıklayarak click eventine geçelim ve aynı metodumuzu yeniden BirseyYap();
şeklinde yazarak çağıralım:
Programı çalıştırıp butona tıklayalım:
Gördüğünüz gibi butonumuzun click eventine yeniden MessageBox.Show() metodu yerine içerisine MessageBox.Show() metodunu yazdığımız metodumuzu çağırdık.
Peki bu örneğimizde tek satır kod yerine binlerce satırlık kod yazdığımızı metot olmadan sürekli tekrar tekrar yazdığımızı hayal edin! Eğer metodlar olmasaydı bu yüzden binlerce satır kodu tekrar tekrar yazar (ya da kopyala-yapıştır yaparak) ömrümüz bilgisayar başında çürür giderdi :)
Void metodun nasıl yazıldığını ve çağırıldığını öğrendiğimize göre şimdide değer döndüren metotları öğrenelim.
Değer döndüren metotlar içerisine yazılan kodların çalıştırılarak tek bir değer döndürdüğü kod bloklarıdır.Elbette C# programlamaya henüz yeni başladığınızı varsayarak konuyu oldukça basite indirgiyorum yoksa bu öğrendiklerinizle ileride neler yapabileceğinizi hayal dahi edemezsiniz :)
Neyse çenem yine düştü sanırım :) Değer döndüren metotlar en basit anlamda string,int,bool gibi ilk değer tiplerini geri döndürürler,mesela bir sayının küpünü hesaplayan bir metot yazalım.Hesaplanacak sayının küp sonucunu tam sayı olacağını varsayarsak metodumuz int tipinde bir değer döndürecek.
O halde öncelikle metodumuzun başına "int" yazıyor ve yanına metot adını yazıyoruz:
Değer döndüren metotlar ile ilgili ilk bilmemiz gereken konu içerisinde mutlaka bir tane "return" (dönüş) deyiminin yazılması gerektiğidir aksi halde program hata verecektir.
Bu örneğimizde ise döndüreceğimiz değer küp sonucu olacağı için kodlarımızı yazalım:
Gayet basit bir şekilde küp hesaplaması yaptık ve küp sonucunu "return" deyimiyle geri döndürdük,peki bu metodu nasıl kullanacağız?
Değer döndüren metotların kullanım tipi tıpkı iş yapan void metotlar gibi çağrılır ancak metot bir değer döndürdüğü için en azından bir değişkene atanmak zorundadır,şimdi metodumuzu çağıralım ve bir değişkene atayalım:
Artık "kupSonuc" isimli int tipindeki değişkenimizin sonucu 5'in küpü olan 125 sayısı olacak,aynı örneği bu defa string tipte deneyelim:
String değer döndüren bu C# metodumuzu ise yine Form1_Load metodu içerisinde çağıralım:
Dikkat ederseniz değer döndüren bir metodu aynı tipte olan bir değişkene yüklüyoruz aksi takdirde programlama
hatası olurdu ya da böyle bir ihtiyacımız varsa da metodu convert (dönüşüm) etmeliyiz.Evet, yanlış duymadınız
tıpkı değişkenler gibi metotlarında sonradan değerleri değiştirilebilir hem de programlama hatası olmadan :)
Peki nasıl?
Örneğin 5'in küpü olan 125 sayısını arada değişken olmadan sadece convert ederek string değişkene dönüştürelim,
bunun için Convert.ToString() metodunu kullanıyoruz:
Bu da makalemizi sona erdirmeden benden size bonus bilgi olsun :)
İş yapan (void) ve değer döndüren (return) metotların nasıl yazıldığını ve nasıl çağrıldığını öğrenmiş olduk,bir sonraki makalemizde ise bu metotlar ile parametre kullanımını öğreneceğiz.
O güne kadar beni özleyin,kendinize iyi bakın :)
Bugünkü makalemizin ana konusunu aslında String sınıfı olarak yazacaktım ki son anda karar değiştirip güzel ve eğlenceli bir konuya ayırmak istedim,dolayısıyla bu makalemizde C# metotlarından bahsedeceğiz.
Hemen hemen her programlama dilinde olan ve bazılarında fonksiyon gibi farklı sözcüklerde anılan metot kavramı bir programın yaptığı iş parçacıklarıdır diyebiliriz.Metotlar hakkında yanlış hatırlamıyorsam ilk C# makalemizde bahsetmiştim ve metotlar sınıfların alt kümesi,sınıflar da namespace (isimuzay) kümesinin alt kümesidir desem kafanız karışabilir o yüzden aşağıdaki resmi incelemenizde fayda var :)
Şimdi tekrar metotlardan bahsedelim,metotlar içerisine C# kodlarını yazdığımız kod bloklarıdır ve metotlar sayesinde aynı işlevlere sahip binlerce satırı bir noktada toplayıp olası istediğimiz her kod satırında tek satırda çalıştırmamıza olanak
sağlamaktadırlar.
Metotla ilgili örnek uygulamalar yapmadan önce biraz daha dır dır edip kafanızı şişirmek istiyorum :)
Metotlar;
- içeriğinde kod parçacıkları bulunduran yapılardır,
- iş yapan (void) ve değer döndüren (return) olmak üzere ikiye ayrılırlar,
- bir metot bir defa yazılır ancak sonsuz sayıda yeniden kullanılabilir,
- nesne yönelimli programlama (object orianted programming - oop) konusudur,
- çok dinamik ve esnek yapıda oldukları için sonsuz sayıda parametre alabilir
ve bu parametreleri kendi içerisinde işleyebilirler.
Şimdilik yukarıdakiler aklıma geliyor ancak şimdiye kadar makalelerimizde metotları sürekli kullanıyorduk.Hatırlarsanız hep MessageBox sınıfının Show() metodu ile ekrana yazılar yazdırıyorduk ;)
Biz yazılımcılar özgür ruhlu insanlarız ve programlama adına sınırlamalara denk gelirsek elimiz ayağımız kilitlenir proje üretemeyiz.O yüzden sağolsun Microsoft, C# konusunda biz yazılımcılara sadece .Net metotlarını vermekle
kalmayıp kendi metotlarımızı yazmamıza olanaklar sunmuştur.
Bu kadar çene çalmak yeter diyorum ve direkt konuya giriyorum artık :)
Metotların iş yapan ve değer döndüren (int,string gibi) olarak ikiye ayrıldığını söylemiştimi,öncelikle iş yapan metodun ne olduğunu öğrenelim.
İş yapan metotlar içerisine yazılan kodları yalnızca çalıştırır ve herhangi bir değer döndürmezler,anahtar kelimesi "void" deyimidir.Bir void metot oluşturmak için en basit anlamda;
void MetotAdi()
{
//çalıştırılacak kodlar
}
sözdizimini kullanırız.
Şimdi Visual Studio'yu açarak yeni bir Windows Form projesi oluşturalım ve C# dilinde basit bir metot yazalım:
Metot yazarken ilk dikkat etmemiz gereken metodu nereye yazmamız gerektiğidir,dikkat ederseniz sarı renklerle yukarıdan aşağıya işaretlediğim noktalar var ve "Metotlar" olarak gösterdiğim isim-uzay yani programın en geniş kapsam alanıdır.
İkinci işaretlediğim "Form1" ise programın sınıfıdır ve bu sınıf altında daha önce kullandığımız Form1_Load metodu yer almaktadır ve yine dikkat ederseniz programın ilk çalışma anı da bir metotdur :)
"BirseyYap()" metoduna dikkat ederseniz Form1_Load metodunun hemen bittiği noktadan başlamaktadır çünkü sınıflar içerisinde sonsuz sayıda metot yazılabilir o yüzden namespace-sınıf-metot hiyerarşisine dikkat ederek yazdık.
Metodumuz iş yapan bir metot olduğu için "void" anahtar sözcüğünü belirttik ve metot adını yazdıktan sonra parantez açıp kapattık (bir sonraki makalemizde parantez içerisine parametreler yazacağız) ardından scope dediğimiz süslü parantezler açıp kapattık.
İşte bu scopelar arasına kodlarımızı yazacağız ve program içerisinde metodun adını nereye yazarsak yazalım yazacağımız bu kodlar çalışacak.
Şimdi metodumuzun içerisine çok basit bir kod yazalım:
Metodumuzu yazdık ve içerisine MessageBox.Show() metodu ile ekrana mesajımızı verdirmek için programımızı çalıştırıyoruz:
ama o da ne metodumuzu yazdık ama çalışmadı.Bunun sebebi yazdığımız metodu hiçbir yerde çağırmadık ve bu yüzden ekranda mesaj görmedik.Varsayılan olarak bir metodu çalıştırmak için;
MetotAdi();
şeklinde yazmak yeterlidir.Bu örneğimizde yazdığımız metodun programın başlama anında çalışmasını sağlamak için Form1_Load metodu içerisinde çağıralım:
Gördüğünüz gibi programın çalışma anında metodumuz çalıştırıldı.Dikkat ederseniz (bu sözü çok mu sık kullanıyorum acaba :) ) Form1_Load'ın bir metot olduğunu söylemiştik ve şu an metot içerisinde metot çalıştırmış olduk.Bu sayede iç içe C# metodunun çalıştırılabildiğini öğrenmiş olduk :)
Bir metodun nasıl yazıldığını ve nasıl çağırıldığını gördük,peki sadece programın çalışma anında mı metotlar çalışır?
Tabiki hayır! Yazılan bir metodu varsayılan olarak heryerde çalıştırabilirsiniz,örneğin formumuza bir buton ekleyelim:
Butonumuza çift tıklayarak click eventine geçelim ve aynı metodumuzu yeniden BirseyYap();
şeklinde yazarak çağıralım:
Programı çalıştırıp butona tıklayalım:
Gördüğünüz gibi butonumuzun click eventine yeniden MessageBox.Show() metodu yerine içerisine MessageBox.Show() metodunu yazdığımız metodumuzu çağırdık.
Peki bu örneğimizde tek satır kod yerine binlerce satırlık kod yazdığımızı metot olmadan sürekli tekrar tekrar yazdığımızı hayal edin! Eğer metodlar olmasaydı bu yüzden binlerce satır kodu tekrar tekrar yazar (ya da kopyala-yapıştır yaparak) ömrümüz bilgisayar başında çürür giderdi :)
Void metodun nasıl yazıldığını ve çağırıldığını öğrendiğimize göre şimdide değer döndüren metotları öğrenelim.
Değer döndüren metotlar içerisine yazılan kodların çalıştırılarak tek bir değer döndürdüğü kod bloklarıdır.Elbette C# programlamaya henüz yeni başladığınızı varsayarak konuyu oldukça basite indirgiyorum yoksa bu öğrendiklerinizle ileride neler yapabileceğinizi hayal dahi edemezsiniz :)
Neyse çenem yine düştü sanırım :) Değer döndüren metotlar en basit anlamda string,int,bool gibi ilk değer tiplerini geri döndürürler,mesela bir sayının küpünü hesaplayan bir metot yazalım.Hesaplanacak sayının küp sonucunu tam sayı olacağını varsayarsak metodumuz int tipinde bir değer döndürecek.
O halde öncelikle metodumuzun başına "int" yazıyor ve yanına metot adını yazıyoruz:
Değer döndüren metotlar ile ilgili ilk bilmemiz gereken konu içerisinde mutlaka bir tane "return" (dönüş) deyiminin yazılması gerektiğidir aksi halde program hata verecektir.
Bu örneğimizde ise döndüreceğimiz değer küp sonucu olacağı için kodlarımızı yazalım:
Gayet basit bir şekilde küp hesaplaması yaptık ve küp sonucunu "return" deyimiyle geri döndürdük,peki bu metodu nasıl kullanacağız?
Değer döndüren metotların kullanım tipi tıpkı iş yapan void metotlar gibi çağrılır ancak metot bir değer döndürdüğü için en azından bir değişkene atanmak zorundadır,şimdi metodumuzu çağıralım ve bir değişkene atayalım:
Artık "kupSonuc" isimli int tipindeki değişkenimizin sonucu 5'in küpü olan 125 sayısı olacak,aynı örneği bu defa string tipte deneyelim:
String değer döndüren bu C# metodumuzu ise yine Form1_Load metodu içerisinde çağıralım:
Dikkat ederseniz değer döndüren bir metodu aynı tipte olan bir değişkene yüklüyoruz aksi takdirde programlama
hatası olurdu ya da böyle bir ihtiyacımız varsa da metodu convert (dönüşüm) etmeliyiz.Evet, yanlış duymadınız
tıpkı değişkenler gibi metotlarında sonradan değerleri değiştirilebilir hem de programlama hatası olmadan :)
Peki nasıl?
Örneğin 5'in küpü olan 125 sayısını arada değişken olmadan sadece convert ederek string değişkene dönüştürelim,
bunun için Convert.ToString() metodunu kullanıyoruz:
Bu da makalemizi sona erdirmeden benden size bonus bilgi olsun :)
İş yapan (void) ve değer döndüren (return) metotların nasıl yazıldığını ve nasıl çağrıldığını öğrenmiş olduk,bir sonraki makalemizde ise bu metotlar ile parametre kullanımını öğreneceğiz.
O güne kadar beni özleyin,kendinize iyi bakın :)