Dizin Oluşturucular (C# Programlama Kılavuzu)

Dizin oluşturucular, bir sınıf veya yapının örneklerinin, tıpkı diziler gibi dizine eklenmesine izin verir. Dizinli değer, açıkça bir tür veya örnek üyesi belirtilmeden ayarlanabilir veya alınabilir. Dizin oluşturucular, erişimcilerinin parametre kazanması dışında özelliklere benzer.

Aşağıdaki örnek, değer atamak ve almak için basit Get ve set erişimcisi yöntemleriyle genel bir sınıf tanımlar. ProgramSınıfı dizeleri depolamak için bu sınıfın bir örneğini oluşturur.

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.

Not

Daha fazla örnek için bkz. Ilgili bölümler.

İfade gövdesi tanımları

Bir dizin oluşturucunun Get veya set erişimcisinin bir değer döndüren ya da ayarlayan tek bir deyimden oluşması yaygındır. İfade-Bodied Üyeler, bu senaryoyu desteklemek için basitleştirilmiş bir sözdizimi sağlar. C# 6 ' dan itibaren, aşağıdaki örnekte gösterildiği gibi, bir salt okuma Dizin Oluşturucu ifade olarak uygulanabilir üye olarak uygulanabilir.

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.

=>İfade gövdesini tanıtır ve get anahtar sözcüğünün kullanılmadığını unutmayın.

C# 7,0 ' den itibaren hem Get hem de set erişimcisi, ifade Bodied Üyeler olarak uygulanan bir uygulanmış olabilir. Bu durumda, hem hem de getset anahtar sözcüklerin kullanılması gerekir. Örnek:

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.

Dizin Oluşturuculara Genel Bakış

  • Dizin oluşturucular, nesnelerin dizilere benzer bir şekilde dizine alınmasını sağlar.

  • getErişimci bir değer döndürür. setErişimci bir değer atar.

  • Bu anahtar sözcük, Dizin oluşturucuyu tanımlamak için kullanılır.

  • Value anahtar sözcüğü, erişimci tarafından atanan değeri tanımlamak için kullanılır.

  • Dizin oluşturucuların bir tamsayı değeri ile dizinlenmesini gerekmez; Bu, belirli bir arama mekanizmasını nasıl tanımlayacaksınız.

  • Dizin oluşturucular aşırı yüklenebilir.

  • Dizin oluşturucular birden fazla biçimsel parametreye sahip olabilir, örneğin iki boyutlu bir diziye erişirken.

İlgili Bölümler

C# Dil Belirtimi

Daha fazla bilgi için bkz. C# dil belirtimindeDizin oluşturucular . Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.