|
Программирование >> Обработка исключительных ситуаций
Метод Main Метод, которому передается управление после запуска программы, должен иметь имя Main и быть статическим. Он может принимать параметры из внешнего окружения и возвращать значение в вызвавшую среду. Предусматривается два варианта метода - с параметрами и без параметров: без параметров: static тип MainO { ... } static void MainO { ... } с параметрами: static тип Main( string[] args ){/*...*/} static void Main( string[] args ){/*...*/} Параметры, разделяемые пробелами, задаются при запуске программы из командной строки после имени исполняемого файла программы. Они передаются в массив args. ПРИМЕЧАНИЕ- Имя параметра в программе может быть любым, но принято использовать имя args. Если метод возвращает значение, оно должно быть целого типа, если не возвращает, он должен описываться как void. В этом случае оператор возврата из Main можно опускать, а вызвавшая среда автоматически получит нулевое значение, означающее успешное завершение. Ненулевое значение обычно означает аварийное завершение, например: static int Main( string[] args ) { if ( ... /* все пропало */ ) return 1; if ( ... /* абсолютно все пропало */ ) return 100; Возвращаемое значение анализируется в командном файле, из которого запускается программа. Обычно это делается для того, чтобы можно было принять решение, выполнять ли командный файл дальше. В листинге 7.2 приводится пример метода Main, который выводит свои аргументы и ожидает нажатия любой клавиши. Листинг 7.2. Параметры метода Main using System; namespace ConsoleApplicationi { class Classl Параметр-массив может быть только один и должен располагаться последним в списке. Соответствующие ему аргументы должны иметь типы, для которых возможно неявное преобразование к типу массива. л О Если параметр содержит специальные символы или пробелы, его заключают в ка-зычки. ПРИМЕЧАНИЕ- Для запуска программы из командной строки можно воспользоваться, к примеру, командой Выполнить меню Пуск или командой Пуск Программы Стандартные Командная строка. Индексаторы Индексатор представляет собой разновидность свойства. Если у класса есть скрытое поле, представляющее собой массив, то с помощью индексатора можно обратиться к элементу этого массива, используя имя объекта и номер элемента массива в квадратных скобках. Иными словами, индексатор - это такой ум-шй индекс для объектов. Синтаксис индексатора аналогичен синтаксису свойства: грибуты спецификаторы тип this [ список параметров ] get коддоступа set коддоступа ВНИМАНИЕ- В данном случае квадратные скобки являются элементом синтаксиса, а не указанием на необязательность конструкции. [трибуты мы рассмотрим позже, в главе 12, а спецификаторы аналогичны пецификаторам свойств и методов. Индексаторы чаще всего объявляются со { static void Main( string[] args ) foreach( string arg in args ) Console.WriteLineC arg ); Console.ReadO; Пусть исполняемый файл программы имеет имя ConsoleApplication1.exe и вызывается из командной строки: ; cs\ConsoleApplicationl\bin\Debug\ConsoleApplicationl.exe one two three Тогда на экран будет выведено: public int this[int i] индексатор if ( i >= 0 && i < length ) return a[i] ; else { error = true; return 0; } if ( i >= 0 && i < length && value >= 0 && value <= 100 ) a[i] = value; В версии C# 2.0 допускается раздельное указание спецификаторов доступа для блоков получения и установки индексатора, аналогично свойствам (раздел Свойства , см. с. 120). спецификатором public, поскольку они входят в интерфейс объекта1. Атрибуты и спецификаторы могут отсутствовать. Код доступа представляет собой блоки операторов, которые выполняются при получении (get) или установке значения (set) элемента массива. Может отсутствовать либо часть get, либо set, но не обе одновременно. Если отсутствует часть set, индексатор доступен только для чтения (read-only), если отсутствует часть get, индексатор доступен только для записи (write-only). Список параметров содержит одно или несколько описаний индексов, по которым выполняется доступ к элементу. Чаще всего используется один индекс целого типа. Индексаторы в основном применяются для создания специализированных массивов, на работу с которыми накладываются какие-либо ограничения. В листинге 7.3 создан класс-массив, элементы которого должны находиться в диапазоне [О, 100]. Кроме того, при доступе к элементу проверяется, не вышел ли индекс за допустимые границы. Листинг 7.3. Использование индексаторов using System; namespace ConsoleApplicationi class SafeArray { public SafeArray( int size ) конструктор класса a = new int[size]; length = size; public int Length свойство - размерность get { return length; }
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |