C# Vize + Final Ders Notları 11 – İndexleyiciler(indexer)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
 * bir indexer nesnelere dizi gibi davranılmasını sağlar. ayrıca bir sınıfı dizi şeklinde kullanabilmek ve bu sınıftan türetilen nesneleri dizinlemek amacı ile kullanılır.
 * indexer kuralları;
 * geri dönüş tipine sahip olmalıdır.
 * indexer static olarak tanımlanmaz
 * indexer overload yapılabilir.
 * indexer parametreleri normal değişkenler olmadığından ref ve out sözcükleri ile yönlendirilemezler.
 * indexer this anahat sözcüğü ile tanımlanır.
 * this indexer ın kullandığı sınıf nesnelerini temsil etmektedir.
*/
namespace ConsoleApplication1
{
  /*IntIndexer adında sınıf oluşturun.
   * bir adet string tipinde myData isminde field oluşturun.
   * yapıcı metodunu oluşturun ve tamsayı bir parametre alsın.
   * dizinin uzunluğunu girilen parametre kadar oluşturulsun ve indislere elemanlar eklensin.
   */
 class IntIndexer//IntIndexer adında sınıf oluşturuldu
 {
    private string[] myData;//myData adında sınıfın dizi görevini yapacak field oluşturuldu.
    public IntIndexer(int size)//sınıfın yapıcı metodu oluşturuldu.
    {
        myData = new string[size];//gelen parametreye göre dizinin uzunluğu bildirildi.
        for (int i = 0; i < size; i++)//dizinin uzunluğuna kadar her indis e empty yazdırıldı.
        {
            myData[i] = “empty”;
        }
    }
    private string this[int pos]//yazma ve okuma işleminde string değer döndüren ve [] içersine tam sayı kabul ederek işlemleri yapan dizinin işlenleri burada yapılıyor.
    {
        get { return myData[pos]; }//okuma işleminde dizinin kaçıncı elemanı isteniyorsa döndürülüyor.
        set { myData[pos] = value; }//yazma işleminde değer(value) ilgili indise aktarılıyor.
    }
    static void Main(string[] args)
    {
        int size = 10;//tam sayı tipinde size değşkenine 10 değeri atandı.
        IntIndexer myInd = new IntIndexer(size);//sınıfın nesnesi oluşturulurken yapıcı metoduna size değişkeni gönderildi. yani size kadar genişlikte bir dizi oluşturulmasını sağlayacak.
        myInd[9] = “Some Value”;//sınıfta ilgili indisine değerler yollanıyor.(set bloğuna)
        myInd[3] = “Another Value”;
        myInd[5] = “Any Value”;
        Console.WriteLine(“\nIndexer Output\n”);
        for (int i = 0; i < size; i++)//sınıfın get değerinde i. indisinde ki değer okunuyor.(get) yani private string this[i] olarak işlem gerçekleşiyor.
        {
            Console.WriteLine(“MyInd[{0}]:{1}”, i, myInd[i]);
        }
        Console.ReadKey();
    }
 }
}


Java Developer

Yazıyı Paylaş

Related Articles

Yorum Yaz

© 2020 Onur Arslan. Tüm Hakları Saklıdır. · RSS Yazıları · RSS Yorumları