Типы данных 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 []

Рис. 3.3. Использование утилиты Ildasm.exe для просмотра типов данных в программе, реализованной на управляемом C++
