C# → Сходства и различия Delphi vs C#

Янв 7, 2011


После небольшого штудирования книг по C#, были замечены некоторые сходства с языком Delphi. Например, зная что делает тот или иной код в Delphi и найдя аналогию в C#, код начинает восприниматься более легче. Но нужно заметить, что не всегда сходства кода выполняют одни и те же действия.

1. Объявление стандартных переменных:
C#

int myNumber;
string myString;
bool myBoolean;

Delphi

myNumber: integer;
myString: string;
myBoolean: Boolean;

Примечание:
Как видите, в основном разница в очередности объявлений. В C# сначала идет тип переменной, затем имя переменной, а в Delphi наоборот. Объявление переменных в C# можно делать в любой части кода, в Delphi же только после директивы var. Также нужно запомнить, что код C# зависит от регистра букв, в отличии от Delphi.

2. Объявление статических массивов:
C#

int[] myNumber = new int[100];
string[] myString = new string[100];
bool[] myBoolean = new bool[100];

Delphi

myNumber: array[0..100] of integer;
myString: array[0..100] of string;
myBoolean: array[0..100] of boolean;

Примечание:
В C# объявление статических (имеющих заданный и неизменный размер, в данном случае 100 "ячеек") массивов происходит в два этапа. Сначала объявляется переменная массива (int[] myNumber), а затем создается сам массив (new int[100]). Поэтому этот код можно разбить на две строчки. В Delphi мы можем указать не только размерность массива, но и с какого элемента начинать отсчет.

3. Объявление динамических массивов:
C#

List<int> myInteger = new List<int>();
List<string> myString = new List<string>();
List<bool> myBoolean = new List<bool>()

Delphi

myNumber: array of integer;
myString: array of string;
myBoolean: array of boolean;

Примечание:
В C# нет динамических массивов, но есть коллекции (списки). Для добавления элемента в массив достаточно выполнить myString.Add("Привет"). Также имеется куча дополнительных методов для работы со списками - сортировка, замена и т.д. В Delphi после объявления динамического массива, нужно задать ему размер - SetLength(100). Функций для работы с массивами в Delphi нет.

4. Создание экземпляра класса:
C#

WebRequest myVariable;
myVariable = new WebRequest("http://ya.ru");

Delphi

myVariable: TIdHTTP;
myVariable := TIdHTTP.Create("http://ya.ru");

Примечание:
В C# как видно роль Create (Delphi) выполняет директива new, а в остальном методика создания экземпляра у них сходна. Однако, в C# есть небольшое преимущество - объявление переменной и создание экземпляра можно объединить:

WebRequest myVariable = new WebRequest("http://ya.ru");

Post to Twitter

Похожие статьи:

  1. Вынужденный переход с Delphi на C#
  2. Отправка multipart/form-data данных
  3. Генерация MD5 хэша

Комментарии (4)

  1. avatar

    Ghostonline
    Март 25th, 2011 at 15:14 #

    >>Функций для работы с массивами в Delphi нет.
    Эмм, вообще то в дельфи есть и такие же List, Dictionary и т.п.

  2. avatar

    GlooK
    Март 26th, 2011 at 00:00 #

    Ну это больше строковые функции :)

  3. avatar

    Ghostonline
    Март 31st, 2011 at 21:22 #

    В смысле?… там такие же дженерики как в сишарпе, введены в дельфи 2009
    И анонимные методы тоже есть )
    Давно этим удачно пользуюсь )

  4. avatar

    GlooK
    Апрель 1st, 2011 at 11:41 #

    Хм, это я не учел.
    Я выше BDS2006 ничего не использовал, поэтому о дженириках мало что знаю :)

Ваш комментарий

Rambler's Top100 Яндекс.Метрика