.NET глазами дельфийца. C#
Страница 8. Чего нет в Delphi


 

Чего нет в 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#, есть существенныеограничения:

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

 
« Предыдущая статья   Следующая статья »