Читаем C# 4.0: полное руководство полностью

    upperBound = --high;

  }

  // Это индексатор для класса RangeArray.

  public int this[int index] {

    // Это аксессор get.

    get {

      if(ok(index)) {

        return a[index - lowerBound];

      } else {

        throw new RangeArrayException("Ошибка нарушения границ.");

      }

    }

    // Это аксессор set.

    set {

      if(ok(index)) {

        a[index - lowerBound] = value;

      }

      else throw new RangeArrayException("Ошибка нарушения границ.");

    }

  }

  // Возвратить логическое значение true, если

  // индекс находится в установленных границах,

  private bool ok(int index) {

    if(index >= lowerBound & index <= upperBound) return true;

    return false;

  }

}

// Продемонстрировать применение массива с произвольно

// задаваемыми пределами индексирования,

class RangeArrayDemo {

  static void Main() {

    try {

      RangeArray ra = new RangeArray(-5, 5);

      RangeArray ra2 = new RangeArray(1, 10);

      // Использовать объект га в качестве массива.

      Console.WriteLine("Длина массива rа: " + ra.Length);

      for(int i = -5; i <= 5; i++) ra[i] = i;

      Console.Write("Содержимое массива ra: ");

      for (int i = -5; i <= 5; i++)

        Console.Write(ra[i] + " ");

      Console.WriteLine("\n");

      // Использовать объект ra2 в качестве массива.

      Console.WriteLine("Длина массива rа2: " + ra2.Length);

      for (int i = 1; i <= 10; i++) ra2[i] = i;

      Console.Write("Длина массива ra2: ");

      for (int i = 1; i <= 10; i++)

        Console.Write(ra2[i] + " ");

      Console.WriteLine("\n") ;

    }

    catch (RangeArrayException exc) {

      Console.WriteLine(exc);

    }

    // А теперь продемонстрировать обработку некоторых ошибок.

    Console.WriteLine("Сгенерировать ошибки нарушения границ.");

    // Использовать неверно заданный конструктор,

    try {

      RangeArray ra3 = new RangeArray(100, -10); // Ошибка!

    }

    catch (RangeArrayException exc) {

      Console.WriteLine(exc);

    }

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

    try {

      RangeArray ra3 = new RangeArray(-2, 2);

      for(int i = -2; i <= 2; i++) ra3[i] = i;

      Console.Write("Содержимое массива ra3: ");

      for (int i = -2; i <= 10; i++) // сгенерировать ошибку нарушения границ

        Console.Write(ra3[i] + " ");

    }

    catch (RangeArrayException exc) {

      Console.WriteLine(exc);

    }

  }

}

После выполнения этой программы получается следующий результат.

Длина массива rа: 11

Содержимое массива ra: -5 -4 -3 -2 -1 0 1 2 3 4 5

Длина массива ra2: 10

Содержимое массива ra2: 1 2 3 4 5 6 7 8 9 10

Сгенерировать ошибки нарушения границ.

Нижний индекс не меньше верхнего.

Содержимое массива raЗ: -2 -1 0 1 2 Ошибка нарушения границ.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных