Элементарные типы в C#

C#   8 февраля 2012  Автор статьи:  

Так как некоторые типы данных используются в языках программирования очень часто, то для удобства разработчика, компиляторами предусмотрен упрощенный синтаксис. Например :

System.Int32 a = new System.Int32();

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

Int a = 0;

Согласитесь, так код выглядит намного лучше, к тому же компилятор в обоих примерах генерирует совершенно идентичный код. Таким образом, те типы данных, которые поддерживаются компилятором напрямую, называются элементарными типами. Все эти типы содержаться в библиотеке классов .NET Framework Class Library (FCL).
Кажется, что использование коротких имен типов намного удобнее, но все не так просто. В идеале лучше не использовать короткие имена так как:

• Часто при разработке приложений на С#, программисты не понимаю, что лучше использовать String или string. Это абсолютно не важно, так как string преобразуется в System.String.
• В С# long отображается в System.Int64, в то время как в других языках он может быть Int16 или Int32. Таким образом, при переходе с одного языка на другой код может быть неверно истолкован
• Существуют методы, которые сами содержат имена типов. К примеру, у BinaryReader есть методы ReadBoolean, ReadInt32 и ReadSingle и т. д. И мы можем столкнуться с вполне корректным, но не совсем естественным кодом:
BinaryReader br = new BinaryReader();
float b = br.ReadSingle();//Код корректен, но неестественен
Single b = br.ReadSingle();//Код корректен и естественен

Таким образом, я советую использовать полные имена типов.

Давайте немного поговорим о приведении элементарных типов.

• Int32 a = 5; // Неявное преобразование Int32 к Int32
• Int64 b = a; // Неявное преобразование Int32 к Int64
• Single s = a; // Неявное преобразование Int32 к Single
• Byte b = (Byte) a; // Явное преобразование Int32 к Byte
• Int16 t = (Int16) s; // Явное преобразование Single к Int16

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

Научиться программировать

  • на Delphi

  • на Java

  • на C++