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();
    }
 }
}


Yazılıma olan tutkusu için Trakya Üniversitesi - Bilgisayar Teknolojisi ve Bilişim Sistemleri öğrencisi, bölüm temsilcisi ve Keşan Yusuf Çapraz Uygulamalı Bilimler Yüksekokulu okul temsilcisi olarak öğrenimini 2016'da tamamladı. Junior Java Developer olarak aktif iş hayatına devam etmektedir.

Yazıyı Paylaş

Related Articles

Yorum Yaz

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