Computer >> Máy Tính >  >> Lập trình >> C#

Các chỉ mục quá tải trong C # là gì?

Một trình lập chỉ mục trong C # cho phép một đối tượng được lập chỉ mục, chẳng hạn như một mảng. Khi một chỉ mục cho một lớp được định nghĩa, lớp này hoạt động tương tự như một mảng ảo. Sau đó, bạn có thể truy cập phiên bản của lớp này bằng toán tử truy cập mảng ([]).

Các chỉ mục có thể bị quá tải. Các chỉ mục cũng có thể được khai báo với nhiều tham số và mỗi tham số có thể là một kiểu khác nhau.

Sau đây là một ví dụ về các trình chỉ mục bị quá tải trong C # -

Ví dụ

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] = "John";
         names[1] = "Joe";
         names[2] = "Graham";
         names[3] = "William";
         names[4] = "Jack";
         names[5] = "Tom";
         names[6] = "Tim";
         //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();
      }  
   }
}

Đầu ra

John
Joe
Graham
William
Jack
Tom
Tim
N. A.
N. A.
N. A.
10