Home Contact RSS

C#’ta Indexer Kavramı

ÖrneÄŸin Array’lerden bildiÄŸiniz üzere bazı objeler üzerinde degisken[0], degisken[1] ÅŸeklinde deÄŸer alabilmek ve deÄŸer atamak mümkündür.

Peki kendi yazdığınız bir class içerisinde bunu nasıl yapabilirsiniz? Bunun için C# özel bir keyword içeriyor: this. “this” keyword’unun içinde bulunduÄŸumuz class’ın o anki instance’ına eriÅŸmek için kullanıldığını hepimiz biliyoruz fakat aÅŸağıdaki örnekte de görebileceÄŸiniz üzere bu keyword’ün baÅŸka bir kullanımı daha var.

using System.Web;

namespace Sunali
{
    public class CSharpIndexer
    {
        private string[] data = new string[4];

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

        public void WriteToStream(HttpResponse response)
        {
            for (int i = 0; i < data.Length; i++)
            {
                response.Write(this[i] + "
"); } } } }

AÅŸağıdaki kod bir ASPX dosyasının içeriÄŸidir…

namespace Sunali
{
    public class ClassToUserIndexer : System.Web.UI.Page
    {
        protected override void OnLoad(EventArgs e)
        {
            DoSomething();

            base.OnLoad(e);
        }

        public void DoSomething()
        {
            CSharpIndexer csi = new CSharpIndexer();
            csi[0] = "Ahmet";
            csi[1] = "Ali";
            csi[2] = "AyÅŸe";
            csi[3] = "Mehmet";
            csi[4] = "CoÅŸkun";

            csi.WriteToStream(Response);
        }
    }
}

Not: Örnekte görmüş olduÄŸunuz class’a ait indexer “string” deÄŸer döndürmek ve kabul etmek üzere yazıldı fakat siz “this” keyword’ünden önce bulunan “string” tipi yerine istediÄŸiniz tipi yazarak indexer özelliÄŸinden faydalanabilirsiniz.

Leave a Comment