Страница 8 из 19 Чего нет в DelphiТеперь можно рассмотреть те преимущества, которые имеетC# по сравнению сDelphi (порядокперечисления произволен и ни в коей мере не отражает объективные приоритеты илисубъективные предпочтения): - описание переменных в коде программы
- возможность передачи в метод переменного количества параметров
- автоматическое удаление объектов
- поля классов
- индексаторы
- делегаты
- возможность реализации модели обработки событий
- цикл foreach
- статические конструкторы
- операторы классов
- структуры
- атрибуты
- возможность использовать русский язык для имен объектов программы
Описание переменных в коде программыВозможность описания переменных в коде программы пришла вC# из C++. Пример кода: class VarTest { static void Main() { int a; int b, c = 1, d; for (int i = 0; i < 10; i++) { int x = i * 2; } } }
В этом примере продемонстрированы сразу нескольковозможностей, отсутствующих в Delphi: - описание переменных
- одновременное описание и инициализация переменных
- локальная область видимости и время жизни переменных
Возможность передачи в метод переменного количества параметровПример кода, иллюстрирующий возможность передачи в методпеременного количества параметров: class Test { static void F(params int[] args) { // обработка параметров } static void Main() { F(); F(1); F(1, 2); F(1, 2, 3); F(new int[] {1, 2, 3, 4}); } }
В Delphi отсутствие переменного количества параметров можно частичноскомпенсировать либо использованием значений параметров по умолчанию, либопередачей в качестве параметра открытого массива. Однако в первом случае все равно количество параметровограничено и должно быть определено при написании соответствующейподпрограммы. Во втором же случае, хотя и наблюдается сходство с C#, есть существенныеограничения: - нельзя передать пустой массив (т.е. массив с нулевым количеством элементов)
- передаваемый массив должен быть создан и заполнен или до вызова подпрограммы, или в момент вызова с помощью конструктора открытого массива
- неоднородные типы данных поддерживаются только при передаче вариантного открытого массива (впрочем, код разбора такого массива внутри подпрограммы обычно бывает довольно
- громоздким).
|