Pengindeks (Panduan Pemrograman C#)
Pengindeks memungkinkan instans kelas atau struct diindeks seperti array. Nilai yang diindeks bisa diatur atau diambil tanpa secara eksplisit menentukan jenis atau anggota instans. Pengindeks menyerupai properti kecuali pengaksesnya mengambil parameter.
Contoh berikut ini mendefinisikan kelas generik dengan metode get dan set aksesor sederhana untuk menetapkan dan mengambil nilai. Kelas Program
membuat instans kelas ini untuk menyimpan string.
using System;
class SampleCollection<T>
{
// Declare an array to store the data elements.
private T[] arr = new T[100];
// Define the indexer to allow client code to use [] notation.
public T this[int i]
{
get { return arr[i]; }
set { arr[i] = value; }
}
}
class Program
{
static void Main()
{
var stringCollection = new SampleCollection<string>();
stringCollection[0] = "Hello, World";
Console.WriteLine(stringCollection[0]);
}
}
// The example displays the following output:
// Hello, World.
Catatan
Untuk contoh selengkapnya, lihat Bagian Terkait.
Definisi Isi Ekspresi
Biasanya pengindeks get atau set accessor terdiri dari satu pernyataan yang mengembalikan atau menetapkan nilai. Anggota yyang mengisi ekspresi menyediakan sintaks yang disederhanakan untuk mendukung skenario ini. Dimulai dengan C# 6, pengindeks baca-saja dapat diimplementasikan sebagai anggota bertubuh ekspresi, seperti yang ditunjukkan oleh contoh berikut.
using System;
class SampleCollection<T>
{
// Declare an array to store the data elements.
private T[] arr = new T[100];
int nextIndex = 0;
// Define the indexer to allow client code to use [] notation.
public T this[int i] => arr[i];
public void Add(T value)
{
if (nextIndex >= arr.Length)
throw new IndexOutOfRangeException($"The collection can hold only {arr.Length} elements.");
arr[nextIndex++] = value;
}
}
class Program
{
static void Main()
{
var stringCollection = new SampleCollection<string>();
stringCollection.Add("Hello, World");
System.Console.WriteLine(stringCollection[0]);
}
}
// The example displays the following output:
// Hello, World.
Perhatikan bahwa =>
memperkenalkan isi ekspresi, dan kata kunci get
tidak digunakan.
Dimulai dengan C# 7.0, aksesori get dan set dapat diimplementasikan sebagai anggota berisi ekspresi. Dalam hal ini, kata kunci get
dan set
harus digunakan. Contohnya:
using System;
class SampleCollection<T>
{
// Declare an array to store the data elements.
private T[] arr = new T[100];
// Define the indexer to allow client code to use [] notation.
public T this[int i]
{
get => arr[i];
set => arr[i] = value;
}
}
class Program
{
static void Main()
{
var stringCollection = new SampleCollection<string>();
stringCollection[0] = "Hello, World.";
Console.WriteLine(stringCollection[0]);
}
}
// The example displays the following output:
// Hello, World.
Ringkasan Pengindeks
Pengindeks memungkinkan objek diindeks dengan cara yang mirip dengan array.
Aksesor
get
mengembalikan nilai. Aksesorset
menetapkan nilai.Kata kunci ini digunakan untuk menentukan pengindeks.
Kata kunci nilai digunakan untuk menentukan nilai yang ditetapkan oleh pengakses
set
.Pengindeks tidak harus diindeks oleh nilai integer; segalanya tergantung pada bagaimana Anda menentukan mekanisme pencarian tertentu.
Pengindeks dapat kelebihan beban.
Pengindeks bisa memiliki lebih dari satu parameter formal, misalnya, saat mengakses array dua dimensi.
Bagian terkait
Spesifikasi Bahasa C#
Untuk informasi selengkapnya, lihat Pengindeks dalam Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.