آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

Indexer در C#

دوره های مرتبط با این مقاله

Indexer در C#

با کمک Indexer ها می‌توان اشیاء را مانند یک آرایه ایندکس کرد. زمانی که Indexer ی را برای کلاسی تعریف می‌کنید این کلاس مانند یک آرایه‌ی مجازی رفتار می‌کند. بعد از این کار می‌توانید با استفاده از عملگر دسترسی آرایه ([]) به نمونه‌ی این کلاس دسترسی پیدا کنید.


سینتکس

یک Indexer تک بعدی دارای سینتکس زیر است:

element-type this[int index] {
// The get accessor.
 get {
// return the value specified by index
 }
   
// The set accessor.
 set {
// set the value specified by index
 }
}

استفاده از Indexer ها

اعلان رفتار یک Indexer تا حدی شبیه به یک ویژگی انجام می‌شود. مشابه با ویژگی‌ها، برای تعریف کردن Indexer ها نیز شما باید از اکسسورهای get و set استفاده کنید. با این حال ویژگی‌ها عضو داده‌ای مشخصی را برگشت می‌دهند و یا تنظیم می‌کنند. این در حالی است که Indexer ها مقدار مشخصی از نمونه‌ی شیء را برگشت می‌دهند و یا تنظیم می‌کنند. به بیان دیگر Indexer نمونه داده را به بخش‌های کوچک‌تر تقسیم کرده، هر یک از بخش‌ها را ایندکس می‌کند و سپس آن‌ها را دریافت یا ارسال می‌کند.
هنگام تعریف کردن ویژگی‌ها باید اسم ویژگی را فراهم کرد. Indexer ها نه به کمک اسم بلکه به کمک با استفاده از واژه‌ی کلیدی this تعریف می‌شوند. این واژه‌ی کلیدی به نمونه‌ی شیء اشاره دارد. در مثال زیر به این مفهوم پرداخته شده است:

using System;
namespace IndexerApplication {
   
 class IndexedNames {
 private string[] namelist = new string[size];
 static public int size = 10;
      
 public IndexedNames() {
 for (int i = 0; i < size; i++)
 namelist[i] = "N. A.";
 }
 public string this[int index] {
 get {
 string tmp;
         
 if(index >= 0 && index <= size-1) {
 tmp = namelist[index];
 } else {
 tmp = "";
 }
            
 return (tmp);
 }
 set {
 if(index >= 0 && index <= size-1) {
 namelist[index] = value;
 }
 }
 }
 static void Main(string[] args) {
 IndexedNames names = new IndexedNames();
 names[0] = "Zara";
 names[1] = "Riz";
 names[2] = "Nuha";
 names[3] = "Asif";
 names[4] = "Davinder";
 names[5] = "Sunil";
 names[6] = "Rubic";
         
 for (int i = 0; i < IndexedNames.size; i++) {
 Console.WriteLine(names[i]);
 }
 Console.ReadKey();
 }
 }
}

زمانی که کد بالا کامپایل و اجرا می‌شود، نتیجه‌ی زیر نمایش داده می‌شود:

Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
N. A.
N. A.
N. A.

Indexer های با بار بیش از حد

Indexer ها می‌توانند بیش از ظرفیت خود بار حمل کنند. همچنین آن‌ها می‌توانند با کمک چندین پارامتر به گونه‌ای که هر یک از این پارامترها نوع متفاوتی داشته باشند، اعلان شوند. الزامی وجود ندارد که ایندکس‌ها عدد صحیحی باشند. با کمک C# می‌توان نوع دیگری را برای ایندکس‌ها انتخاب کرد، مانند یک رشته.
در مثال زیر Indexer های با بار بیش از حد نشان داده شده‌اند:

using System;
namespace IndexerApplication {
 class IndexedNames {
 private string[] namelist = new string[size];
 static public int size = 10;
      
 public IndexedNames() {
 for (int i = 0; i < size; i++) {
 namelist[i] = "N. A.";
 }
 }
 public string this[int index] {
 get {
 string tmp;
            
 if(index >= 0 && index <= size-1) {
 tmp = namelist[index];
 } else {
 tmp = "";
 }
            
 return (tmp);
 }
 set {
 if(index >= 0 && index <= size-1) {
 namelist[index] = value;
 }
 }
 }
      
 public int this[string name] {
 get {
 int index = 0;
            
 while(index < size) {
 if (namelist[index] == name) {
 return index;
 }
 index++;
 }
 return index;
 }
 }
 static void Main(string[] args) {
 IndexedNames names = new IndexedNames();
 names[0] = "Zara";
 names[1] = "Riz";
 names[2] = "Nuha";
 names[3] = "Asif";
 names[4] = "Davinder";
 names[5] = "Sunil";
 names[6] = "Rubic";
         
//using the first indexer with int parameter
 for (int i = 0; i < IndexedNames.size; i++) {
 Console.WriteLine(names[i]);
 }
         
//using the second indexer with the string parameter
 Console.WriteLine(names["Nuha"]);
 Console.ReadKey();
 }
 }
}

زمانی که کد بالا کامپایل و اجرا می‌شود، نتیجه به صورت زیر نمایش داده می‌شود:

Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
N. A.
N. A.
N. A.
2

  • 465
  •    770
  • تاریخ ارسال :   1397/08/23

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .