Argumen Bernama
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 49 dari 70.
Argumen bernama memungkinkan kamu menentukan parameter mana yang menerima nilai dengan menggunakan namanya, alih-alih mengandalkan posisi. Hal ini membuat pemanggilan method lebih jelas dan memungkinkan kamu memberikan argumen dalam urutan apa pun.
Gunakan nama parameter yang diikuti titik dua sebelum nilai:
public static void CreateUser(string name, int age, bool isActive)
{
Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}
// Menggunakan argumen bernama
CreateUser(name: "Alice", age: 25, isActive: true);
CreateUser(age: 30, isActive: false, name: "Bob"); // Urutan apa pun bisa digunakanArgumen bernama sangat berguna saat dipadukan dengan parameter opsional. Alih-alih memberikan semua nilai opsional sebelumnya, kamu bisa langsung memilih nilai yang dibutuhkan:
public static void Configure(string host, int port = 8080, bool useSSL = false, int timeout = 30)
{
Console.WriteLine($"{host}:{port}, SSL: {useSSL}, Timeout: {timeout}");
}
// Lewati port dan useSSL, cukup tentukan timeout
Configure("localhost", timeout: 60);
Configure("server.com", useSSL: true);Kamu bisa mencampur argumen posisional dan argumen bernama, tetapi argumen posisional harus diletakkan terlebih dahulu. Argumen bernama meningkatkan keterbacaan, terutama untuk method dengan beberapa parameter bertipe sama atau flag boolean yang maknanya tidak jelas hanya dari nilainya.
Tantangan
MudahMari kita buat generator laporan yang memanfaatkan argumen bernama agar pemanggilan method menjadi sangat jelas. Saat method memiliki beberapa parameter, terutama yang bertipe sama atau berupa penanda boolean, argumen bernama membuat kodemu menjelaskan dirinya sendiri.
Kamu akan menyusun kodemu dalam dua file:
ReportGenerator.cs: Buat classReportGeneratordi namespaceReportsdengan method yang memiliki beberapa parameter opsional:GenerateReport(string title, string author = "Anonymous", bool includeHeader = true, bool includeSummary = false, int maxPages = 10)- Method ini harus mengembalikan string berformat yang menjelaskan konfigurasi laporan
- Format:
Report: {title} by {author} | Header: {Yes/No}, Summary: {Yes/No}, Max Pages: {maxPages}
Program.cs: Di file utamamu, tunjukkan manfaat argumen bernama dengan memanggilGenerateReportdengan beberapa cara, melewati parameter opsional yang tidak kamu perlukan dan menentukan hanya parameter yang penting untuk setiap laporan.
Kamu akan menerima tiga input:
- Judul laporan pertama
- Judul laporan kedua
- Judul laporan ketiga
Buat tiga laporan dengan konfigurasi yang berbeda:
- Laporan pertama: Gunakan judul saja (semua nilai default berlaku)
- Laporan kedua: Gunakan judul dengan
includeSummary: truedanmaxPages: 25(lewati author dan includeHeader, gunakan nilai default keduanya) - Laporan ketiga: Gunakan judul dengan
author: "Admin",includeHeader: false, danincludeSummary: true(gunakan nilai default maxPages)
Cetak hasil setiap laporan pada barisnya sendiri.
Misalnya, jika inputnya adalah Sales Q1, Annual Review, dan Inventory Check, outputnya harus seperti berikut:
Report: Sales Q1 by Anonymous | Header: Yes, Summary: No, Max Pages: 10
Report: Annual Review by Anonymous | Header: Yes, Summary: Yes, Max Pages: 25
Report: Inventory Check by Admin | Header: No, Summary: Yes, Max Pages: 10Perhatikan bagaimana argumen bernama memungkinkanmu langsung melewati parameter yang kamu perlukan. Kamu tidak perlu menentukan author atau includeHeader hanya untuk mengubah includeSummary. Ini membuat pemanggilan method jauh lebih mudah dibaca dan menunjukkan maksudnya!
Coba sendiri
using System;
using Reports;
class Program
{
public static void Main(string[] args)
{
// Baca tiga judul laporan
string title1 = Console.ReadLine();
string title2 = Console.ReadLine();
string title3 = Console.ReadLine();
// Buat instance ReportGenerator
ReportGenerator generator = new ReportGenerator();
// TODO: Buat laporan pertama, gunakan hanya judulnya (semua nilai default berlaku)
// TODO: Buat laporan kedua, gunakan judul dengan includeSummary: true dan maxPages: 25
// (lewati author dan includeHeader agar keduanya tetap menggunakan nilai default)
// TODO: Buat laporan ketiga, gunakan judul dengan author: "Admin", includeHeader: false, dan includeSummary: true
// (pertahankan nilai default maxPages)
// Cetak hasil setiap laporan
}
}
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