Иллюстрированный самоучитель по Architecture .NET

Типы данных C++ и .NET Framework

С другой стороны, некоторым типам C++ соответствуют классы .NET Framework. Для примитивных типов, таких, как int и float (с плавающей точкой), соответствующие классы .NET являются оберточными (wrapping) или, как их еще называют, упаковочными (boxing). Упаковка данных примитивных типов будет рассмотрена в этой главе несколько позже.

В следующем примере объявляются переменные разных типов C++ и показываются соответствующие классы .NET Framework, для чего используется метод GetType класса System::Object (Система::Объект).

//MappingDataTypes.срр
#using <mscorlib.dll>
using namespace System;
// использовать пространство имен Система;
void main(void)
{
bool b = false; // логический (булев) b = ложь; Булева переменная
Char ch = '\0'; // Символ
Object *pobj = new Object; //
Объект String *pstr = S""; // Строка
float f = 1.OF; // f с плавающей точкой = l.OF – одинарная
//точность
double d = 1.0; // Двойная точность
char с = '\0'; // символ SByte
unsigned char uc = '\0'; // Байт – символ без знака
short s = 0; //Intl6 (короткий)
unsigned short us = 0; //UIntl6 – короткий без знака
int i = 0; //Int32
unsigned int ui = 0; //UInt32 – int без знака
long l = 0; //Xnt64
unsigned long ul = 0; //UInt64 – длинный без знака
int intManagedArray _gc[] // System.Int32[] – сборщик мусора
= new int _gc[5]; // сборщик мусора
Console::WriteLine(_box(b) › GetType());
Console::WriteLine(_box(ch) › GetType());
Console::WriteLine(pobj › GetType());
Console::WriteLine(pstr › GetType());
Console::WriteLine(_box(f) › GetType());
Console::WriteLine(_box(d) › GetType());
Console::WriteLine(_box(c) › GetType());
Console::WriteLine(_box(uc) › GetType());
Console:: WriteLine (_box (s) › GetType ());
Console::WriteLine(_box(us) › GetType());
Console::WriteLine(_box(i) › GetType());
Console::WriteLine(_box(ui) › GetType<));
Console::WriteLine(_box(1) › GetType());
Console::WriteLine(_box(ul) › GetType());
Console::WriteLine(intManagedArray › GetType());
}

Программа напечатает:

System.Boolean // Система. Булева переменная
System.Char // Система. Символ
System.Object // Система. Объект
System.String // Система. Строка
System.Single // Система. Одинарный
System.Double // Система. Двойной
System.SByte
System.Byte // Система. Байт
System.Intl6
System.UIntl6
System.Int32
System.UInt32
System.Int32
System.UInt32
System.Int32 []

Иллюстрированный самоучитель по Architecture .NET › Программирование на управляемом C++ › Типы данных C++ и .NET Framework
Рис. 3.3. Использование утилиты Ildasm.exe для просмотра типов данных в программе, реализованной на управляемом C++

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.