params key-word

RMAG news

params – kalit so’zi avvalroq c# ning 12-chi versiyasida taqdim etilgan edi, u vaqtda params ni faqat array turiga nisbatan ishlata olardik, 13-chi versiyada esa params harqanday collection turiga nisbatan ishlatsa bo’ladi, yani harqanday IEnumerable vorislariga qollasa boladi.
params kalit so’zi o’zgaruvchan sonli(istalgan miqtorda), argumentlarni metodga o’tkazish imkonini beradi. Bu shuni anglatadiki, siz funksiyani istalgan miqdordagi argumentlar, jumladan, nol bilan chaqirishingiz mumkin. Bu kalit so’zi kompilyatorga, kelayotgan argumentlarni individual obekt sifatida emas, balki bir-butun collection sifatida ko’rib chiqilishini anglatadi.
C# ning 11-chi versiyasigacha, agar metodga biz array(yoki harqanday collection) o’tqazmoqchi bo’lsak faqatgina Print(nums); yoki Print(new int[] {1,2,3}); deb yozishimiz kerak edi, yani collection ni avval initsializatsiya qilishimiz kerak edi.

Misol:

var nums = new int[] { 1, 2, 3 }; <– etibor qiling

Print(nums); <– etibor qiling

void Print(int[] array)
{
foreach(var item in array)
Console.Write($”{item} “);
}
// output -> 1 2 3

params bilan esa bunday qilishga hojat yoq

Misol:

Print(1, 2, 3); <– etibor qiling

void Print(params int[] array)
{
foreach(var item in array)
Console.Write($”{item} “);
}
// output -> 1 2 3

Va bu kalit so’zi nafaqat arraylar bilan, balki harqanday IEnumerable vorislariga qollasa boladi.

Misol:

Print(1, 2, 3); <– etibor qiling

void Print(params List<int> list) <– etibor qiling
{
foreach(var item in list)
Console.Write($”{item} “);
}
// output -> 1 2 3

Params ni ishlatib boshqa tiplar bilan, turli kombinatsiyalar qilish mukin, faqat params metodni eng oxirgi argumenti bo’lishi shart.

Misol:

PrintMessageAndNumbers(“uchta son yubordim: “, 1,2,3);
void PrintMessageAndNumbers(string message, params int[] numbers)
{
Console.WriteLine(message);
foreach (int number in numbers)
{
Console.Write($”{number} “);
}
}
// output -> uchta son yubordim: 1 2 3

Shu va shunga o’xshagan ko’plab kombinatsiyalr qilish mumkin.