Menangkap Parameter dalam Anggota
Gunakan parameter konstruktor utama di seluruh tipe.
Menangkap Parameter dalam Anggota adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Menggunakan Parameter dalam Anggota
Kekuatan konstruktor utama berasal dari penggunaan parameternya di dalam anggota: metode, properti, dan penginisialisasi bidang. Kompilator mengatur penyimpanan sesuai kebutuhan.
using System;
class Multiplier(int factor) {
public int Apply(int n) => n * factor;
}
Console.WriteLine(new Multiplier(3).Apply(5)); // 15Ditangkap atau Hanya Diinisialisasi
Jika parameter hanya digunakan dalam penginisialisasi bidang atau properti, penyimpanan tambahan tidak diperlukan. Jika digunakan dalam metode, kompilator menangkap parameter tersebut ke dalam bidang tersembunyi.
using System;
class A(int x) {
public int Stored = x; // initializer only
}
class B(int x) {
public int Get() => x; // captured into a field
}
Console.WriteLine(new A(7).Stored); // 7
Console.WriteLine(new B(9).Get()); // 9Parameter Dapat Diubah
Parameter konstruktor utama berperilaku seperti parameter biasa: parameter tersebut dapat diubah di dalam instans, kecuali Anda memperlakukannya sebagai hanya-baca. Mengubahnya akan mengubah bidang yang ditangkap.
using System;
class Toggle(bool on) {
public void Flip() => on = !on;
public bool State => on;
}
var t = new Toggle(false);
t.Flip();
Console.WriteLine(t.State); // TrueMengekspos sebagai Properti Hanya-Baca
Pola yang umum adalah mengekspos parameter melalui properti yang hanya memiliki pengambil, sehingga antarmuka publik tetap bersih sementara parameter tetap bersifat internal.
using System;
class User(string email) {
public string Email { get; } = email;
}
Console.WriteLine(new User("a@b.com").Email); // a@b.comProperti Terhitung dari Parameter
Parameter dapat digunakan secara alami dalam properti terhitung yang isi badannya berupa ekspresi.
using System;
class Money(decimal amount, string currency) {
public string Display => amount.ToString("0.00") + " " + currency;
}
Console.WriteLine(new Money(9.5m, "USD").Display); // 9.50 USDParameter dalam Beberapa Metode
Parameter yang sama dan ditangkap dapat digunakan bersama oleh banyak metode, seperti bidang privat yang diinisialisasi saat pembuatan objek.
using System;
class Range2(int lo, int hi) {
public bool Contains(int n) => n >= lo && n <= hi;
public int Clamp(int n) => Math.Max(lo, Math.Min(hi, n));
}
var r = new Range2(0, 10);
Console.WriteLine(r.Contains(5)); // True
Console.WriteLine(r.Clamp(15)); // 10Menangkap Tipe Referensi
Parameter tipe referensi yang ditangkap memungkinkan Anda menyimpan dependensi yang disuntikkan dan memanggilnya dari metode mana pun.
using System;
using System.Collections.Generic;
class Repo(List<string> store) {
public void Add(string item) => store.Add(item);
public int Count => store.Count;
}
var list = new List<string>();
var repo = new Repo(list);
repo.Add("x");
Console.WriteLine(repo.Count); // 1Menghindari Penyimpanan Ganda yang Tidak Disengaja
Jika Anda menetapkan parameter ke sebuah bidang dan menggunakan parameter tersebut dalam metode, nilainya mungkin tersimpan dua kali. Pilih salah satu pendekatan agar lebih jelas.
using System;
class Clean(int x) {
// expose once via property, reference property in methods
public int Value { get; } = x;
public int Doubled() => Value * 2;
}
Console.WriteLine(new Clean(4).Doubled()); // 8Parameter dalam Lambda
Parameter dapat ditangkap oleh lambda yang didefinisikan di dalam kelas, sama seperti bidang.
using System;
using System.Collections.Generic;
using System.Linq;
class Filter(int threshold) {
public IEnumerable<int> KeepAbove(IEnumerable<int> xs) =>
xs.Where(n => n > threshold);
}
var f = new Filter(3);
Console.WriteLine(string.Join(",", f.KeepAbove(new[]{1,2,3,4,5}))); // 4,5Masa Hidup Lingkup
Parameter yang ditangkap tetap ada selama objek tersebut ada. Parameter ini secara efektif merupakan keadaan instans, jadi jangan menganggapnya diatur ulang di antara pemanggilan metode.
using System;
class Accumulator(int seed) {
private int total = seed;
public int Add(int n) { total += n; return total; }
}
var a = new Accumulator(100);
Console.WriteLine(a.Add(1)); // 101
Console.WriteLine(a.Add(1)); // 102Menerapkan Semuanya
Layanan ini menangkap dua dependensi dan menggunakannya di berbagai metode, sehingga menunjukkan bentuk yang umum dijumpai di dunia nyata.
using System;
class PriceService(decimal taxRate, string currency) {
public decimal WithTax(decimal net) => net * (1 + taxRate);
public string Format(decimal v) => v.ToString("0.00") + " " + currency;
}
var s = new PriceService(0.2m, "EUR");
Console.WriteLine(s.Format(s.WithTax(100m))); // 120.00 EURPemeriksaan Singkat
Pastikan Anda memahami cara parameter konstruktor utama disimpan.
Ringkasan
Anda telah mempelajari cara parameter konstruktor utama digunakan dalam anggota.
- Jika digunakan dalam metode, parameter akan ditangkap ke dalam bidang tersembunyi.
- Jika hanya digunakan dalam penginisialisasi, penyimpanan tambahan tidak diperlukan.
- Tampilkan parameter tersebut melalui properti yang hanya dapat dibaca agar antarmukanya tetap rapi.
- Parameter tersebut berperilaku sebagai keadaan instans selama masa hidup objek.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menangkap Parameter dalam Anggota” gratis?
Ya — teks lengkap “Menangkap Parameter dalam Anggota” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menangkap Parameter dalam Anggota”?
Gunakan parameter konstruktor utama di seluruh tipe. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Menangkap Parameter dalam Anggota” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Konstruktor Utama pada Kelas
- Menangkap Parameter dalam Anggota
- Konstruktor Utama dengan Struct
- Menggabungkan dengan Properti dan Tipe Dasar