Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

C# — индексаторы

Индексатор позволяет индексировать объект, например массив. Когда вы определяете индексатор для класса, этот класс ведет себя подобно виртуальному массиву. . Затем вы можете получить доступ к экземпляру этого класса с помощью оператора доступа к массиву ([ ]).

Синтаксис

Одномерный индексатор имеет следующий синтаксис —

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
   }
}

Использование индексаторов

Объявление поведения индексатора в некоторой степени похоже на свойство. аналогично свойствам, вы используете get и установить средства доступа для определения индексатора. Однако свойства возвращают или задают определенный член данных, тогда как индексаторы возвращают или задают конкретное значение из экземпляра объекта. Другими словами, он разбивает данные экземпляра на более мелкие части и индексирует каждую часть, получает или устанавливает каждую часть.

Определение свойства включает предоставление имени свойства. Индексаторы определяются не именами, а тегом 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.

Перегруженные индексаторы

Индексаторы могут быть перегружены. Индексаторы также могут быть объявлены с несколькими параметрами, и каждый параметр может быть другого типа. Необязательно, чтобы индексы были целыми числами. C# позволяет использовать индексы других типов, например строку.

В следующем примере демонстрируются перегруженные индексаторы —

Живая демонстрация
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

Язык C

  1. C# Hello World — ваша первая программа на C#
  2. Ключевые слова и идентификаторы C#
  3. Переменные C# и (примитивные) типы данных
  4. Операторы С#
  5. Побитовые операторы C# и операторы сдвига битов
  6. Базовый ввод и вывод C#
  7. Выражения, операторы и блоки C# (с примерами)
  8. С# Комментарии
  9. Оператор переключения C#
  10. С# тернарный (?:) оператор