When calling between the runtime environment and existing COM interfaces, the CLR performs automatic data marshaling for CLR types into compatible COM types.
Table 4.1 describes the C# to COM default data type mapping.
Table D-1. C# Type to COM Type Mapping
C# Type |
COM Type |
---|---|
bool |
VARIANT_BOOL |
char |
unsigned short |
sbyte |
Char |
byte |
Unsigned char |
short |
Short |
ushort |
Unsigned short |
int |
Int |
uint |
Unsigned int |
long |
Hyper |
ulong |
Unsigned hyper |
float |
Single |
double |
Double |
decimal |
DECIMAL |
object |
VARIANT |
string |
BSTR |
System.DateTime |
|
System.Guid |
GUID |
System.Currency |
CURRENCY |
1-dimensional arrays |
SAFEARRAY |
Value types |
Equivalently named struct |
enum |
Equivalently named enum |
interface |
Equivalently named interface |
class |
Equivalently named |
[a] COM dates are less precise, causing comparison problems. |
Table 4.2 shows the mapping of the C# modifiers to their equivalent COM interface attributes.
3.140.195.225