-
Kumpulan proses implementasi pengindeks di C#
Salah satu aspek paling menarik dari bahasa C# adalah pengindeks kelas. Sederhananya, yang disebut pengindeks adalah tipe atribut khusus yang melaluinya Anda dapat mereferensikan kelas Anda sendiri seperti halnya array. Tentu saja, fitur ini sangat berguna saat membuat kelas koleksi, namun dalam situasi lain, seperti memproses file besar atau mengabstraksi sumber daya tertentu yang terbatas, tentu saja juga sangat berguna untuk memiliki perilaku seperti array di kelas. Artikel ini akan memandu Anda dalam menyiapkan kelas untuk menggunakan pengindeks. Namun pertama-tama, mari kita uraikan konsep properti untuk memberikan latar belakang yang diperlukan.
Properti Jika Anda pernah menulis sebuah program di VB6, maka Anda pasti sudah familiar dengan metode properti. Metode properti sebenarnya adalah anggota kelas khusus yang mengimplementasikan akses terkontrol ke bidang kelas privat. Ada dua metode atribut dalam bahasa C#, yang pertama adalah get, yang dapat digunakan untuk mengembalikan nilai bidang privat, dan yang kedua adalah set, yang dapat digunakan untuk menyetel nilai bidang privat. Misalnya, dengan mengambil kode berikut sebagai contoh, properti FirstName dibuat untuk mengontrol akses ke nama depan anggota kelas privat:
kelas Orang {
nama depan string pribadi;
string publik Nama Depan {
dapatkan {kembalikan nama depan;}
setel {nama depan = nilai;}
}
}
Deklarasi properti dapat dikodekan sebagai berikut:
Orang p = Orang baru();
p.NamaDepan = "Lamont";
Console.WriteLine (p.FirstName);
Seperti yang Anda lihat, deklarasi atribut lebih mirip deklarasi domain, hanya saja ia juga mendeklarasikan dua anggota khusus, yang menurut Microsoft disebut sebagai pengakses. Fungsi dapatkan akses dipanggil ketika properti dipanggil di sisi kanan ekspresi atau ketika properti digunakan sebagai parameter subrutin (atau fungsi) lain. Sebaliknya, fungsi akses set dipanggil ketika properti dipanggil di sisi kiri ekspresi dan nilai bidang privat disetel dengan meneruskan parameter value secara implisit. Anda dapat membuat properti read-only dengan menghilangkan fungsi set accessor, sehingga setiap upaya untuk mengatur properti akan menghasilkan kesalahan kompilasi.
Manfaat menggunakan pengindeks
Di bawah ini adalah strukturnya
<pengubah> <tipe pengembalian> ini [daftar argumen]
...{
mendapatkan
...{
// Dapatkan kode di sini
}
mengatur
...{
// Kode yang disetel ada di sini
}
}
Catatan:
pengubah: pengubah, seperti pribadi, publik, dilindungi atau internal
ini: Ini adalah kata kunci khusus dalam C#, yang mewakili instance kelas referensi saat ini. Ini maksudnya indeks kelas saat ini.
daftar argumen: Ini mengacu pada parameter pengindeks.
Setelah ngobrol panjang lebar, mari kita beralih ke topik, lalu mengapa saya harus berputar-putar di lingkaran ini? Faktanya, ini karena pengindeks suatu kelas sangat mirip dengan properti, dan hal ini juga terjadi dari sudut pandang kode. Berikut adalah contoh kelas dengan pengindeks yang mengembalikan string:
Contoh kelas {
string publik ini [int indeks] {
get {return "Anda lulus " + indeks; }
}
}
Perhatikan bahwa nama atribut di sini adalah ini, yang merujuk kembali ke instance kelas saat ini, dan daftar parameter diapit dalam tanda kurung siku, bukan tanda kurung. Selain itu, ini adalah pengindeks hanya-baca. Untuk mengubahnya menjadi tipe baca/tulis, saya menambahkan fungsi akses set. Saat mendefinisikan pengindeks, Anda tidak perlu hanya mengambil satu parameter saja. Parameter pengindeks dapat berupa jenis apa pun, tetapi int biasanya merupakan jenis yang paling masuk akal. Dimungkinkan juga untuk memiliki lebih dari satu pengindeks (kelebihan beban) di kelas yang sama.
Setelah mendefinisikan kelas Sample seperti di atas, kita dapat menggunakan pengindeks sebagai atribut default, seperti yang ditunjukkan di bawah ini:
Sampel s = Sampel baru();
Konsol.WriteLine(s[55]);
Properti dan Pengindeks Ada beberapa perbedaan antara properti dan pengindeks:
Setiap atribut kelas harus memiliki nama unik, dan setiap pengindeks yang ditentukan dalam kelas harus memiliki tanda tangan unik atau daftar parameter (sehingga kelebihan pengindeks dapat diterapkan).
Properti bisa bersifat statis dan pengindeks harus menjadi anggota instance.
Fungsi akses yang ditentukan untuk pengindeks memiliki akses ke parameter yang diteruskan ke pengindeks, sedangkan fungsi akses properti tidak memiliki parameter.
Perilaku antarmuka yang seperti array sering kali disukai oleh pelaksana program, sehingga Anda juga dapat menentukan pengindeks untuk antarmuka. Antarmuka koleksi IList dan IDictionary mendeklarasikan pengindeks untuk mengakses item yang disimpan.
Saat mendeklarasikan pengindeks untuk suatu antarmuka, ingatlah bahwa deklarasi tersebut hanya menunjukkan keberadaan pengindeks. Anda hanya perlu menyediakan fungsi akses yang sesuai, tanpa menyertakan pengubah cakupan. Kode berikut mendeklarasikan pengindeks sebagai bagian dari antarmuka IImplementMe:
antarmuka IIimplementMe {
string ini[int indeks]
{
mendapatkan;
mengatur;
}
Kelas implementasi terkait harus secara spesifik mendefinisikan fungsi akses get dan set untuk pengindeks IimplementMe.
Itulah gambaran dasar tentang pengindeks. Anda sekarang seharusnya memiliki pemahaman yang lebih baik tentang peran pengindeks dalam pengembangan Anda.
kelas SampleCollection<T>
{
pribadi T[] arr = T[100] baru;
publik T ini[int i]
{
mendapatkan
{
kembali arr[i];
}
mengatur
{
arr[i] = nilai;
}
}
}
// Kelas ini menunjukkan bagaimana kode klien menggunakan pengindeks
Program kelas
{
kekosongan statis Utama (string[] args)
{
SampleCollection<string> stringCollection = SampleCollection baru<string>();
stringCollection[0] = "Halo, Dunia";
Sistem.Konsol.WriteLine(stringCollection[0]);
}
}
Artikel ini berasal dari blog CSDN. Harap sebutkan sumbernya saat mencetak ulang: http://blog.csdn.net/licheng19891020/archive/2009/12/09/4974516.aspx
-