Menu
CoddyTech

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));  // 60

Ada 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.

challenge icon

Tantangan

Mudah

Mari 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 class MessageFormatter di namespace Formatting dengan dua method yang menggunakan params:
    • Combine(params string[] parts), menggabungkan semua string yang diberikan dengan spasi di antaranya, lalu mengembalikan hasilnya
    • FormatList(string label, params int[] numbers), menggabungkan parameter biasa dengan array params. 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. Gunakan Combine untuk menggabungkan tiga kata tetap, dan gunakan FormatList untuk 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, 78

Perhatikan 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
        
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C# online