Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The following table shows data types used in COM and their corresponding .NET Framework built-in value types or classes. Any type not explicitly identified in this table is converted to an Int32 system type. For corresponding types in Visual Basic .NET, C#, and the Managed Extensions for C++, see the Introduction to the .NET Framework Class Library.
COM value type | COM reference type | System type |
---|---|---|
bool | bool * | System.Int32 |
char, small | char *, small * | System.SByte |
short | short * | System.Int16 |
long, int | long *, int * | System.Int32 |
Hyper | hyper * | System.Int64 |
unsigned char, byte | unsigned char *, byte * | System.Byte |
wchar_t, unsigned short | wchar_t *, unsigned short * | System.UInt16 |
unsigned long, unsigned int | unsigned long *, unsigned int * | System.UInt32 |
unsigned hyper | unsigned hyper * | System.UInt64 |
float | float * | System.Single |
double | double * | System.Double |
VARIANT_BOOL | VARIANT_BOOL * | System.Boolean |
void * | void ** | System.IntPtr |
HRESULT | HRESULT * | System.Int16 or System.IntPtr |
SCODE | SCODE * | System.Int32 |
BSTR | BSTR * | System.String |
LPSTR or [string, ...] char * | LPSTR * | System.String |
LPWSTR or [string, ...] wchar_t * | LPWSTR * | System.String |
VARIANT | VARIANT * | System.Object |
DECIMAL | DECIMAL * | System.Decimal |
DATE | DATE * | System.DateTime |
GUID | GUID * | System.Guid |
CURRENCY | CURRENCY * | System.Decimal |
IUnknown * | IUnknown ** | System.Object |
IDispatch * | IDispatch ** | System.Object |
SAFEARRAY(type) | SAFEARRAY(type) * | type[] |
The following table lists COM value and reference types that convert to corresponding element types. For example, a COM coclass automatically maps to a managed class with the same name.
COM value type | COM reference type | Element type |
---|---|---|
typedef BaseType MyType | ByRef BaseType | BaseType |
MyStruct | ByRef VALUETYPE<MyStruct> | valuetype<MyStruct> |
MyEnum | ByRef VALUETYPE<MyEnum> | valuetype<MyEnum> |
MyInterface * | ByRef CLASS <MyInterface> | Class <MyInterface> |
MyCoClass | ByRef CLASS <_Class> | class <_Class> |
See Also
Marshaling Data with COM Interop | Customizing COM Callable Wrappers | Customizing Runtime Callable Wrappers