only for RuBoard - do not distribute or recompile |
When calling between the runtime environment and existing COM interfaces, the CLR performs automatic data marshaling for CLR types into compatible COM types.
Table D-1 describes the C# to COM default data 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 |
float |
double |
double |
decimal |
DECIMAL |
object |
VARIANT, IUnknown*, IDispatch* |
string |
BSTR |
System.DateTime |
DATE[A] |
System.Guid |
GUID |
System.Decimal |
CURRENCY |
1-dimensional arrays |
SAFEARRAY |
Value types |
Equivalently named struct |
enum |
Equivalently named enum |
interface |
Equivalently named interface |
class |
Equivalently named CoClass |
[A] COM dates are less precise, causing comparison problems.
Table D-2 shows the mapping of the C# modifiers to their equivalent COM interface attributes.
C# modifier |
COM attribute |
---|---|
[in] |
|
out |
[out] |
ref |
[in, out] |
[out, retval] |
only for RuBoard - do not distribute or recompile |