C#

C# Indexers

Yazar - UĞUR

Indexers(dizin oluşturucular), nesnelerin bir dizi gibi dizine eklenmesini sağlar.
Bir sınıf için bir indexer(dizin oluşturucu) tanımladığınızda, bu sınıf sanal bir diziye(Array) benzer davranır . Ardından, dizi erişim operatörünü ([]) kullanarak bu sınıfın örneğine erişebilirsiniz.
Daha önce belirtildiği gibi, String değişkeni aslında String sınıfının bir nesnesidir. Ayrıca, String sınıfı aslında Char nesnelerinin bir dizisidir. Bu şekilde string sınıfı bir Indexers uygular, böylece herhangi bir karaktere (Char nesnesi) indeksiyle erişebiliriz:

string str = "Hello World";
char x = str[4];
Console.WriteLine(x);
//Outputs "o"

Diziler integer indeksler kullanır, ancak indexers(dizinleyiciler) dizeler, karakterler vb. gibi herhangi bir dizin türünü kullanabilir.

Indexers beyanı, property ile  bir derece benzerlik göstermektedir.Fark, Indexers erişicileri bir dizin gerektirir.
Bir property gibi, bir Indexers tanımlamak için get ve set accessors kullanırsınız.
Bununla birlikte Indexers(dizinleyiciler) nesneden belirli bir değeri döndürürken veya ayarlarken, properties belirli bir sınıf üyesinden değer döndürür veya ayarlar . Başka bir deyişle, örnek veriyi daha küçük parçalara böler ve her parçayı indeksler, her bölümü alır veya ayarlar.
Indexers(Dizinleyiciler) this anahtar sözcüğü ile tanımlanır.

class Clients {
 private string[] names = new string[10];

  public string this[int index] {
 get {
 return names[index];
 }
 set {
 names[index] = value;
 }
 }
}

Gördüğünüz gibi,  indexer tanımı, this anahtar kelimeyi ve uygun değeri elde etmek ve ayarlamak için kullanılan bir dizini içerir.
Şimdi, Sınıfın bir nesnesini oluşturduğumuzda, dizinin elemanları gibi belirli nesneleri belirtmek için bir dizin kullanıyoruz:

Clients c = new Clients();
c[0] = "Dave";
c[1] = "Bob";

Console.WriteLine(c[1]);
//Outputs "Bob"

Sınıf, bir liste, koleksiyon veya nesne dizisi temsil ediyorsa, genellikle bir Indexer kullanırsınız.

Yorum Yap

This site uses Akismet to reduce spam. Learn how your comment data is processed.