Иерархия системных типов.

Встроенные типы данных.

Набор встроенных типов данных един для всех языков программирования. Название типов в различных языках могут выглядеть по разному, но это всего лишь псевдонимы для встроенных системных типов.

 

Имя Описание VisualBasic C# VC++
Целые типы
Byte 8-разрядное целое безнаковое Byte byte Char
SByte 8-разрядное со знаком. Не является совместимым (для различных языков типы различны) SByte sbyte singed char
Int16 16 разрядное со знаком Short short short
Int32 32 разрядное со знаком Integer int int или long
Int64 64 разрядное со знаком Long long _int64
uInt16 16 разрядное без знака. Не совместимо UShort ushort unsigned short
uInt32 32 разрядное без знака. Не совместимо UInteger uint unsigned int или unsigned long
uInt64 64 разрядное без знака. Не совместимо ULong ulong unsigned _int64
Числа с плавающей запятой.
Single Число с плавающей запятой 32-разрядное Single float float
Double Числа с плавающей запятой. Двойная точность. 64 разряда. Double double double
Прочие типы
Boolean Логический тип, принимает значен ия true и false Boolean Bool bool
Char Символ Unicode. 16 разрядный. Char char wchar_t
Decimal Число с фиксированной точкой. 128 разрядное. 27-28 значящих цифр. Decimal Decimal Decimal
Object Базовый класс для всех типов. Object object Object^
String Строка String string String^

 

 

Только часть типов являются CLS (Common Language Specification) совместимыми. Для разработки программы в многоязыковой среде необходимо следовать правилу: не использовать беззнаковые типы в определениях открытых полей типов.

 

 

 

1) Object ------->ValueType (любой производный класс. Структурный тип) -->

1. Type 1) Структура

2. String 2) Enum

3. Array

4. Exception

5. Delegate

 

 

-->Все встроенные типы

Byte

…...

DateTime

 

Встроенные типы являются производными от типа ValueType. Единственное назначение этого типа — замещение некоторых методов определенных в классе Object, например за счет замещения при сравнении двух целочисленных переменных используется структурная, а не ссылочная семантика. У встроенных системных типов реализованных как классы собственный набор свойств, например MaxValue и MinValue, при помощи которых можно получить минимальные и максимальные значения.

 

 

Преобразование типов при помощи класса Convert

Класс обеспечивает независимый от языка программирования способ преобразования. Различные языки могут иметь собственные методы преобразования. В отличае от них Convertгарантирует, что все преобразования будут доступны в общем формате. Этот класс выполняет понижающее преобразование, а также преобразования несвязанных типов данных. Convertподдерживает преобразование из типа Stringв числовые типы, и из типа DateTimeв String,и из типа Stringв Boolean. Convertпроводит преобразования с проверкой и всегда создает исключения, если данное преобразование не поддерживается. Значения, которые надо преобразовать передается в один из соответствующих методов Convert, возвращаемое значение присваивается переменной нового типа.

 

String^ Mystr = “Time”;

bool MyBool = Convert::ToBoolean(MyStr);

String^ str1=”123”;

int MyInt=Convert::ToInt32(str1);

Лекция №11 (17.11.10)

Синтаксис языка C#

Основные характеристики:

1) C# создавался паралельно с созданием .NETи поэтому в полной мере учитывает его возможности.

2) C# является наследником языка C++ и сохраняет общий с ним синтаксис.

3) Синтаксис языка C# стал гораздо проще и удобней, чем C++.

4) В нем отсутвуют указатели и соответственно адресная арифметика, оператор расширения области видимости, оператор стрелка досутпа к полю. Все это заменяется операцией «Точка».

5) Нет понятия дружественных функций. C# является скриптовым языком. То есть на платформе Windows его можно использовать вместо JavaScript. К тому же на C# основана технология ASP.NET (активные серверные страницы), в таком случае знание C# заменяет знания PHP.

6) На C# можно разрабатывать офисные приложения, вместо Basic

 

Преобразование типа в C#

Преобразования делятся на явные и неявные.

1) Неявные преобразования делаются без потери точности и выполняются компилятором автоматически.

2) Преобразования с возможной потерей точности задаются явно программистом с помощью оператора преобразования типа.

 

Преобразование сверху вниз в одном столбце. Из правого столбца в левый вк более старшему. Long и ulong к float. Float->double. Long и ulong → decimal

sbyte – byte

short – ushort

int – uint

long – ulong

float

double

decimal

 

В C# можно создать проверяемы блок, в теле которого арифмитические операции проверяются на допустимость. Проверяемый блок предваряется ключевым словом «Checked”

byte b = 255;

checked

{

try

{

b += 1;

}

catch (Exception e)

{

//Обработка исключения

}

}

В проверяем блоке всегда будет сгенерировано исключение в случае потери информации.

Также существует блок Unchecked, если проверка не нужна.

 

 

В C# определены преобразования в строковый тип.Поскольку все типы являются наследниками класса Object, который обладает методом toString. Этот метод может вызываться неявно, если требуется преобразование к строковому типу.

 

String abc = "abc" + 3.14;