Neler yeni

Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Kod Paylaşımı C# params nedir?

Asperix

Yönetici
Yazılım Uzmanı
Katılım
2 Ara 2022
Mesajlar
52
download.png

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();
    }
}
Aşağıda params özelliği ile gönderilen sayılardan en büyüğünü bulan örnek metot yer almaktadır.

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;
    }
}
Son
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.");
    }
}
Bu özellik C# içerisinde yazı formatlama için kullanılan String.Format ve Console.WriteLine metotlarında da kullanılmaktadır.

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);
    }
}
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Tema düzenleyici

Tema özelletirmeleri

Grafik arka planlar

Granit arka planlar