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.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *