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