Aşağıda yer alan programı inceleyecek olursak; EnBuyuk() metodu int tipinde 2 adet parametre almaktadır ve sayısal değeri en büyük olanı geri döndürmektedir. EnBuyuk() metoduna çağrıda bulunabilmek için sadece ve sadece 2 adet parametre girmemiz gerekmektedir.
private static int EnBuyuk(int sayi1, int sayi2) { if (sayi1 > sayi2) return sayi1; else return sayi2; } static void Main(string[] args) { Console.WriteLine(EnBuyuk(100, 250)); // Çıktı:250 }
Bir metoda değişken sayıda parametre gönderebilmek için params anahtar sözcüğünü kullanmamız gerekmektedir. Yukarıdaki örnekte yer alan EnBuyuk() metodu sadece 2 adet parametre alabilmekteydi, şimdi bu metodu değişken sayıda parametre alacak şekilde düzenleyelim;
private static int EnBuyuk(params int[] sayilar) { return sayilar.Max(); } static void Main(string[] args) { Console.WriteLine(EnBuyuk(100, 250)); // 2 parametre verildi. ÇIKTI:250 Console.WriteLine(EnBuyuk(518, 456, 537, 931)); // 4 parametre verildi. ÇIKTI:931 Console.WriteLine(EnBuyuk(258, 174, 56)); // 3 parametre verildi. ÇIKTI:258 }
Görüldüğü üzere parametre sayısında herhangi bir kısıt bulunmamaktadır. Metot, iki parametre verilerek de çağrılabilir, dört parametre verilerek de. Çalışma mantığı ise gayet basittir; params anahtar sözcüğü ile dinamik bir dizi oluşturulur ve parametre olarak gönderilen değerler bu diziye eklenir. Metot içerisinde de dizi içerisindeki parametreler kullanılarak istenilen işlemler yapılabilir.
Uygulama
Bu örnekte özellikle dikkatinizi çekmek istediğim nokta; sabit parametreler ile değişken sayıdaki parametrelerin birlikte kullanılabileceği. CiftSayilar() metoduna girilen ilk parametre, sabit bir parametredir. Sayıların yan yana mı, alt alta mı ekrana yazılacağını belirtecektir. İlk parametreden sonra girilen tüm parametreler “sayilar” dizisi içerisinde tutulacaktır.
Metot; “sayilar” dizisi içerisinde bulunan sayılardan çift olanları ekrana yazdırmaktadır.
private static void CiftSayilar(string duzen,params int[] sayilar) { if (duzen=="yanyana") { for (int i=0;i<sayilar.Length;i++) { if (sayilar[i] % 2 == 0) Console.Write("{0,-6}", sayilar[i]); } } else if(duzen=="altalta") { for (int i = 0; i < sayilar.Length; i++) { if (sayilar[i] % 2 == 0) Console.WriteLine(sayilar[i]); } } else { Console.WriteLine("Böyle bir düzen bulunmamaktadır."); } } static void Main(string[] args) { CiftSayilar("altalta", 15, 78, 1, 12, 101, 89, 56); CiftSayilar("yanyana", 12, 54, 68, 11, 7, 3); }
Serdar YILMAZ
list tipinde string olarak parametre alan bir method daha yazıcam ama bu method bu 1m adet listeyi alıp tüm string ifadeleri tersten yazacak nasıl yaparım
Substring metodunun 2 parametreli versiyonunu kendiniz yazın.
(Bu metot için string veri de parametreden gönderilsin ve hiçbir System sınıfından string metot kullanılmasın.) hocam buunu nasıl çözebiliriz.
merhaba hocam. Aşağıdaki gibi bir kod parçası yazdırıyorum. Fakat hata alıyorum. Hatanın kaynağını bulmadım. Yarıdmcı olabilir misiniz. Teşekkürler.
private void textOdeme_KeyPress(object sender, KeyPressEventArgs e)
{
virgulKontrolu();
}
private void virgulKontrolu(object sender, KeyPressEventArgs e)
{
if ((int)e.KeyChar >= 47 && (int)e.KeyChar <= 57)
{
e.Handled = false;
}
else if ((int)e.KeyChar == 8)
{
e.Handled = false;
}
else if ((int)e.KeyChar == 44 || (int)e.KeyChar == 127)
{
e.Handled = false;
}
else
{
e.Handled = true;
}
}
virgulKontrolu metodu iki parametre almakta. Ancak textOdeme_KeyPress metodu içerisinde virgulKontrolu metodunu çağırırken bu parametreleri geçmediğin için hata verecektir.
private void textOdeme_KeyPress(object sender, KeyPressEventArgs e)
{
virgulKontrolu(sender,e);
}
Şeklinde metodu çağırabilirsin.
Teşekkür ediyoruz, gerçekten çok güzel ve anlaşılır hazırlanmış dökümanlar. Gereksiz bilgi yığını da yok
adamsın hocam çok iyi anladım senin sayende sınavı geçtim
anlatımınız çok iyi ancak program çıktılarını da görebilirsek daha iyi olur
Merhaba,
Olumlu bildiriminiz için teşekkür ederim. Yayınlayacağım diğer içerikler de yorumunuzu dikkate alacağım.