C# и Я

О программировании в C#, о себе и немного флуда на разнообразные темы.

Первое знакомство с C#.

Аналогии, by admin.

Сегодня решил опубликовать пост о том, как я впервые познакомился с C#. Думаю, что большинство из нас (я имею в виду тех, кто долгое время программировал на одном языке) не хотят или боятся учить новый язык по причине того, что придется же снова запоминать типы данных, правила написания программ, которые десятками лет труда впечатывались в память. И тут надо весь этот багаж знаний взять и выбросить на помойку? Уверяю Вас – нет. Скорее даже наоборот – те знания и умения, которые Вы получили, программируя в
Delphi помогут Вам освоится в C# намного быстрее.

Впервые я решил начать изучать C# после того, как в очередной раз не смог точно воспроизвести пример из MSDN в Delphi. Ну не хватало у меня на тот момент знаний по синтаксису С#. Вроде бы всегда получалось, а тут – никак. А программу надо было ну просто позарез как сделать.

Я решил основательно разобраться с синтаксисом С#, понять что означают строки типа:

  this.Load += new System.EventHandler(this.myform_Load);
  this.ResumeLayout(false);
  this.PerformLayout();

и т.п. Первая книга, которая мне попалась по части нового для меня языка программирования – “Библия C#” Михаила Фленова. Можно по-разному относиться к творчеству этого автора, но не стоит забывать, что очень долгое время М.Фленов работал в Delphi. А привычки, как известно, искоренятся очень долго. И, надо сказать, книга мне очень сильно пригодилась именно по той причине, что по мере повествования автор то тут, то там проводил аналогии между известными мне приемами программирования в Delphi и новыми в C#.

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

struct Person
    {
        public Person(string firstName, string lastName)
        {
            FirstName = firstName;
            LastName = lastName;
            age = 10;
        }
        public string FirstName;
        public string LastName;
        public int age;
    }

Что он означает, если рассматривать его с точки зрения Delphi? Это обычная запись (record). Для тех, кто программирует в Delphi 7, думаю, станет открытием, но приведенный выше код C# в Delphi будет выглядеть так:

type
  Person = record
    public
      FirstName: string;
      LastName : string;
      constructor Create(aFirstName, aLastName:string);
  end;
...
implementation
 
constructor Create(aFirstName, aLastName:string);
begin
  FirstName:=aFirstName;
  LastName:=aLastName;
end;

Да-да, record’ы в Delphi теперь наследники TObject со всеми вытекающими последствиями :) . Что можно сразу же вынести для себя в качестве аналогий между C# и Delphi?

Во-первых public. Только если в Delphi под действие public попадают все переменные и методы, стоящие после этого слова и до тех пор, пока не встретиться, что-либо другое, то в C# директивы следует указывать для каждого метода, переменной, свойства и т.д.

Во-вторых, типы данных. Конечно в приведенном выше коде C# я использовал сокращенное описание типа данных (мог бы написать и так – System.string), но, тем не менее, что в Delphi, что в C# есть string (хотя работа с ними строится строится по-разному).

Какое существенное отличие можно выделить из описания record’а в Delphi и типа struct в C#? Если отбросить такие мелочи, как описание полей, то останется:

1. В C# определение и реализация метода идет сразу же внутри типа данных. Признаться, это обстоятельство по началу очень сильно напрягает – в глазах начинает рябить от фигурных скобок и зло берет пока дойдешь наконец до конца метода, если этот метод внушительного размера. Но со временем начинаешь привыкать и, даже, в какой-то мере становится вполне сносно и удобно.

2. В C# нет таких понятий как function, constructor, destructor. Точнее, методы есть, есть и конструкторы классов и деструкторы, но описание их происходит по-другому. В приведенном выше коде C# есть конструктор и называется он по имени типа – Person, т.е. метод носящий название типа данных – это конструктор.  Нужен деструктор? добавляем к названию метода знак тильды (~) – получаем метод деструктора, например так:

public ~Person()
        {
          //тут много действий по уничтожению объекта
        }

Хотя, на самом деле деструкторы не так уж и часто нужны в C# – там есть довольно мощный сборщик мусора, который избавляет нас от утечек памяти.

Что я хотел сказать первым своим постом? А хотел я сказать вот что – не стоит бояться изучать что-то новое и тратить на это время. На самом деле процесс перехода на C# с Delphi довольно простой и, в чем-то даже увлекательный процесс. То здесь, то там в процессе своих повествований я буду прибегать к примерам, в которых буду проводить аналогии, указывать различия, плюсы и минусы C# по сравнению с Delphi. Естественно, что все, что будет сказано – это сугубо моё ИМХО, но, думаю, что и этого будет достаточно для того, чтобы Вы тоже решили изучать C#.


No related posts.

Back Top

Responses to “Первое знакомство с C#.”

Comments (1) Trackbacks (0) Leave a comment Trackback url
  1. Благодарен очень,благоларя вам я уже в 15 лет освоил Delphi и Visual Studio

  1. No trackbacks yet.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*