Parameter Opsional
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 48 dari 70.
Parameter opsional memungkinkan kamu menentukan nilai default untuk parameter method. Jika pemanggil tidak memberikan nilai untuk parameter tersebut, nilai default akan digunakan secara otomatis.
Kamu membuat parameter opsional dengan menetapkan nilai default dalam signature method:
public static void Greet(string name, string greeting = "Hello")
{
Console.WriteLine(greeting + ", " + name + "!");
}
// Kedua pemanggilan berfungsi
Greet("Alice"); // Halo, Alice!
Greet("Bob", "Welcome"); // Selamat datang, Bob!Parameter opsional harus muncul setelah semua parameter wajib. Kamu bisa memiliki beberapa parameter opsional, dan pemanggil bisa menghilangkan parameter mana pun dari bagian kanan:
public static void CreateUser(string name, int age = 0, bool isActive = true)
{
Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}
CreateUser("Emma"); // Emma, Usia: 0, Aktif: True
CreateUser("James", 25); // James, Usia: 25, Aktif: True
CreateUser("Sarah", 30, false); // Sarah, Usia: 30, Aktif: FalseNilai default harus berupa konstanta waktu kompilasi, yaitu literal, nilai const, atau ekspresi default. Kamu tidak dapat menggunakan variabel atau pemanggilan method sebagai nilai default. Karena itu, parameter opsional cocok untuk pengaturan konfigurasi dan method yang sebagian besar pemanggilnya menggunakan nilai umum.
Tantangan
MudahMari buat sistem notifikasi yang menggunakan parameter opsional untuk menyediakan pemformatan pesan yang fleksibel. Kamu akan membuat class utilitas yang dapat mengirim notifikasi dengan pengaturan yang bisa disesuaikan, sementara sebagian besar pemanggil akan menggunakan nilai default yang sesuai.
Kamu akan mengatur kodemu dalam dua file:
NotificationService.cs: Buat classNotificationServicedalam namespaceNotificationsdengan method yang menunjukkan penggunaan parameter opsional:SendNotification(string message, string priority = "Normal", bool addTimestamp = true)- Method ini harus mengembalikan string notifikasi yang sudah diformat. SaataddTimestampbernilai true, tambahkan[TIMESTAMP]di awal pesan. Formatnya adalah[Priority] Messageatau[TIMESTAMP] [Priority] Message, bergantung pada pengaturan timestamp.
Program.cs: Dalam file utama, tunjukkan cara kerja parameter opsional dengan memanggilSendNotificationdalam tiga cara berbeda, menggunakan semua nilai default, mengubah satu parameter, dan mengubah kedua parameter opsional.
Kamu akan menerima tiga input:
- Pesan pertama (akan menggunakan semua nilai default)
- Pesan kedua (akan menggunakan prioritas
"Urgent"dengan timestamp default) - Pesan ketiga (akan menggunakan prioritas
"Low"tanpa timestamp)
Panggil SendNotification tiga kali dan cetak setiap hasilnya:
- Pemanggilan pertama: berikan hanya pesan pertama (menggunakan nilai default: prioritas
"Normal", timestamp aktif) - Pemanggilan kedua: berikan pesan kedua dengan prioritas
"Urgent"(timestamp tetap menggunakan nilai default true) - Pemanggilan ketiga: berikan pesan ketiga dengan prioritas
"Low"danfalseuntuk timestamp
Contohnya, jika inputnya adalah System started, Server overload, dan Cache cleared, outputnya seharusnya:
[TIMESTAMP] [Normal] System started
[TIMESTAMP] [Urgent] Server overload
[Low] Cache clearedPerhatikan bagaimana method yang sama menangani ketiga skenario dengan mudah. Pemanggil hanya perlu menentukan hal yang ingin diubah dari nilai default!
Coba sendiri
using System;
using Notifications;
class Program
{
public static void Main(string[] args)
{
// Baca ketiga pesan
string message1 = Console.ReadLine();
string message2 = Console.ReadLine();
string message3 = Console.ReadLine();
// Buat instance dari NotificationService
NotificationService service = new NotificationService();
// TODO: Panggil SendNotification tiga kali dan cetak setiap hasilnya:
// 1. Panggilan pertama: masukkan hanya message1 (menggunakan semua nilai bawaan)
// 2. Panggilan kedua: masukkan message2 dengan prioritas "Urgent" (nilai bawaan timestamp adalah true)
// 3. Panggilan ketiga: masukkan message3 dengan prioritas "Low" dan false untuk timestamp
}
}
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