- Katılım
- 2 Ara 2022
- Mesajlar
- 52
-
Öne çıkan konu
- Portal konusu
- #1

Metotların değişken sayıda parametre almasına imkan veren bir anahtar kelimedir.
Metotlar oluşturulurken kullanılacak parametre sayısı önceden belirlenir.
Örneğin; İki adet sayı toplanmak istediğinde aşağıdaki gibi bir metot yazılabilir.
int Topla(int sayi1, int sayi2);
Toplanacak sayı adedi üç adet olduğunda aşağıdaki gibi bir metot yazılabilir.
int Topla(int sayi1, int sayi2, int sayi3);
Bazen parametre sayısı tam belli olmayabilir.
Bu durumda her eklenen parametre için yeni bir metot tanımlanabilir.
Ancak bu etkili bir çözüm olmayacaktır.
Parametre sayısı belli olmayan metot tanımlamak için params özelliği kullanılabilir.
int Topla(params int[] sayilar);
Artık Topla metodu int türünden değişken sayıda parametre alabilir.
Değişken türü belli olmayan durumlarda C# içerisindeki her şeyin object türünden türediği özelliği kullanılabilir.
void Yazdir(params object[] gelenDegerler);
Gönderilen parametre tür bilgisi object sınıfında yer alan GetType metodu ile alınabilir.
C#:
using System;
class Program {
static void Main() {
DegerAl(10);
DegerAl(10, 30f);
DegerAl(10, 30f, 40.3);
DegerAl(10, 30f, 40.3, "Yusuf");
DegerAl(10, 30f, 40.3, "Yusuf", 3M);
}
static void DegerAl(params object[] gelenDegerler) {
foreach (object eleman in gelenDegerler) {
Console.WriteLine("Değer: {0} - Tipi: {1}", eleman, eleman.GetType().Name);
}
Console.WriteLine();
}
}
C#:
using System;
class Program {
static void Main() {
int sonuc = EnBuyukSayiyiBul(10, 5, 7, 99, 1531, 22, 331313);
Console.WriteLine(sonuc);
}
static int EnBuyukSayiyiBul(params int[] sayilar) {
int enBuyukSayi = -1;
if(sayilar.Length > 0) {
enBuyukSayi = sayilar[0];
}
foreach (int sayi in sayilar) {
if(enBuyukSayi < sayi) {
enBuyukSayi = sayi;
}
}
return enBuyukSayi;
}
}
Bu özellik kullanıldığında metodun aşırı yüklenmiş olduğu varsayılır.
C# aşırı yüklenmiş metotları seçerken önceliği normal metotlara verir.
C#:
using System;
class Program {
static void Main() {
Topla(1, 2);
}
static void Topla(int sayi1, int sayi2) {
Console.WriteLine("Ben normal metodum.");
}
static void Topla(params int[] gelenSayilar) {
Console.WriteLine("Ben params kullanılmış metodum.");
}
}
C#:
using System;
class Program {
static void Main() {
string Ad = "Ahsen";
string Soyad = "ALTAY";
Console.WriteLine("Adınız: {0}, Soyadınız: {1}", Ad, Soyad);
string sonuc = String.Format("Adınız: {0}, Soyadınız: {1}", Ad, Soyad);
}
}