Kata Kunci 'params'
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 47 dari 70.
Kata kunci params memungkinkan method menerima sejumlah argumen dengan tipe yang sama. Alih-alih mengharuskan pemanggil membuat array secara manual, mereka dapat langsung memberikan argumen yang dipisahkan dengan koma.
Letakkan params sebelum parameter array dalam tanda tangan method:
public static int Sum(params int[] numbers)
{
int total = 0;
foreach (int n in numbers)
total += n;
return total;
}
// Semua pemanggilan ini berfungsi
Console.WriteLine(Sum(1, 2)); // 3
Console.WriteLine(Sum(1, 2, 3, 4, 5)); // 15
Console.WriteLine(Sum()); // 0 (array kosong)Compiler secara otomatis membungkus argumen ke dalam array. Kamu juga bisa langsung meneruskan array yang sudah ada jika kamu memilikinya:
int[] values = { 10, 20, 30 };
Console.WriteLine(Sum(values)); // 60Ada beberapa aturan yang perlu diingat: sebuah method hanya boleh memiliki satu parameter params, dan parameter tersebut harus menjadi parameter terakhir dalam daftar. Kamu bisa menggabungkannya dengan parameter biasa:
public static void Log(string prefix, params object[] items)
{
foreach (var item in items)
Console.WriteLine(prefix + item);
}
Log("Item: ", "Apple", 42, true);Kata kunci params membuat API lebih fleksibel dan memudahkan pemanggil, itulah sebabnya kamu melihatnya pada method seperti Console.WriteLine dan string.Format.
Tantangan
MudahMari buat pemformat pesan fleksibel yang menggunakan kata kunci params untuk menangani berapa pun banyaknya nilai. Kamu akan membuat class utilitas yang dapat memformat pesan dengan argumen variabel, sekaligus menunjukkan cara params membuat method lebih serbaguna dan mudah digunakan oleh pemanggilnya.
Kamu akan mengatur kodemu dalam dua file:
MessageFormatter.cs: Buat classMessageFormatterdi namespaceFormattingdengan dua method yang menggunakanparams:Combine(params string[] parts), menggabungkan semua string yang diberikan dengan spasi di antaranya, lalu mengembalikan hasilnyaFormatList(string label, params int[] numbers), menggabungkan parameter biasa dengan arrayparams. Method ini harus mengembalikan label, diikuti titik dua, lalu semua angka yang dipisahkan koma (misalnya,Scores: 85, 90, 78)
Program.cs: Di file utama, tunjukkan penggunaan kedua method dengan input. Baca string label, lalu baca satu baris berisi bilangan bulat yang dipisahkan koma. GunakanCombineuntuk menggabungkan tiga kata tetap, dan gunakanFormatListuntuk menampilkan label bersama angka-angkanya.
Kamu akan menerima dua input:
- String label (misalnya,
Scores) - Daftar bilangan bulat yang dipisahkan koma (misalnya,
85,90,78,92)
Pertama, panggil Combine dengan kata-kata "Hello", "params", dan "world!", lalu cetak hasilnya. Kemudian, ubah bilangan bulat yang dipisahkan koma menjadi array dan panggil FormatList dengan label dan array bilangan bulat tersebut, lalu cetak hasilnya juga.
Misalnya, jika inputnya adalah Scores dan 85,90,78, outputnya akan menjadi:
Hello params world!
Scores: 85, 90, 78Perhatikan bahwa Combine menerima berapa pun banyaknya string secara langsung, sedangkan FormatList menunjukkan bahwa kamu dapat mencampur parameter biasa dengan params. Parameter params hanya perlu berada di urutan terakhir. Kamu juga dapat memberikan array yang sudah ada ke method params, dan itulah yang akan kamu lakukan dengan bilangan bulat yang sudah diuraikan!
Coba sendiri
using System;
using Formatting;
class Program
{
public static void Main(string[] args)
{
// Baca input
string label = Console.ReadLine();
string numbersInput = Console.ReadLine();
// TODO: Gunakan MessageFormatter.Combine dengan "Hello", "params", dan "world!"
// lalu cetak hasilnya
// TODO: Ubah bilangan bulat yang dipisahkan koma menjadi array int
// Petunjuk: Pisahkan string dan ubah setiap bagian menjadi int
// TODO: Gunakan MessageFormatter.FormatList dengan label dan array int
// lalu cetak hasilnya
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola CompositeLatihan sendiri: Compiler C# online