индексаторы

Индексаторы обеспечивают доступ к объектам массива с помощью индекса.
Синтаксис:
модификатор тип this [int индекс] {
 set {
  //устанавливает значение
 }
 get {
  //возвращает значение
 }
}

одномерные индексаторы

Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • class Counter {
  •  decimal price;
  •  public Counter(decimal arg) {
  •   price = arg;
  •  }
  •  private ushort[] arrayShow = new ushort[2];
  •  //индексатор
  •  public ushort this[int i] {
  •   set {
  •    arrayShow[i] = value;
  •   }
  •   get {
  •    return arrayShow[i];
  •   }
  •  }
  •  public ushort ResultShow() {
  •   return (ushort)(arrayShow[1] - arrayShow[0]);
  •  }
  •  public decimal Sum() {
  •   return Math.Round((decimal)(ResultShow() * price), 2);
  •  }
  • }
  •  
  • class Program {
  •  public static int Main() {
  •   Console.WriteLine("оплата за электроэнергию\n");
  •   Console.Write("Введите цену за 1 кВт/ч              : ");
  •   decimal price = decimal.Parse(Console.ReadLine());
  •   Counter C = new Counter(price);
  •   Console.Write("Введите начальные показания счетчика : ");
  •   C[0] = ushort.Parse(Console.ReadLine());
  •   Console.Write("Введите конечные показания счетчика  : ");
  •   C[1] = ushort.Parse(Console.ReadLine());
  •   Console.WriteLine("Сумма за электроэнергию              : {0}", C.Sum());
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
оплата за электроэнергию

Введите цену за 1 кВт/ч : 0,3084
Введите начальные показания счетчика : 0
Введите конечные показания счетчика : 100
Сумма за электроэнергию : 30,84

условие в теле аксессора одномерного индексатора

Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • class Counter {
  •  decimal price;
  •  public Counter(decimal arg) {
  •   price = arg;
  •  }
  •  private ushort[] arrayShow = new ushort[2];
  •  //индексатор
  •  public ushort this[int i] {
  •   set {
  •    if(i<0 || i>arrayShow.Length) {
  •     throw new Exception("Индекс находится за пределами границы массива");
  •    }
  •    else {
  •     arrayShow[i] = value;
  •    }
  •   }
  •   get {
  •    if(i<0 || i>arrayShow.Length) {
  •     throw new Exception("Индекс находится за пределами границы массива");
  •    }
  •    else {
  •     return arrayShow[i];
  •    }
  •   }
  •  }
  •  public ushort ResultShow() {
  •   return (ushort)(arrayShow[1] - arrayShow[0]);
  •  }
  •  public decimal Sum() {
  •   return Math.Round((decimal)(ResultShow() * price), 2);
  •  }
  • }
  •  
  • class Program {
  •  public static int Main() {
  •   Console.WriteLine("оплата за электроэнергию\n");
  •   Console.Write("Введите цену за 1 кВт/ч              : ");
  •   decimal price = decimal.Parse(Console.ReadLine());
  •   Counter C = new Counter(price);
  •   Console.Write("Введите начальные показания счетчика : ");
  •   C[0] = ushort.Parse(Console.ReadLine());
  •   Console.Write("Введите конечные показания счетчика  : ");
  •   C[1] = ushort.Parse(Console.ReadLine());
  •   Console.WriteLine("Сумма за электроэнергию              : {0}", C.Sum());
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
оплата за электроэнергию

Введите цену за 1 кВт/ч : 0,3084
Введите начальные показания счетчика : 0
Введите конечные показания счетчика : 100
Сумма за электроэнергию : 30,84