Appendix C. Data Marshaling
When calling between the runtime environment and existing COM
interfaces, the CLR performs automatic
data marshaling
for CLR types into compatible COM
types. Table C-1 describes the C# to COM default data type mapping.
Table C-1. C# type to COM type mapping|
|
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
|
DATE
| |
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 CoClass
|
Table C-2. C# modifier/COM attribute mapping|
|
<no modifier>
|
[in]
| |
out
|
[out]
| |
ref
|
[in, out]
| |
<return value>
|
[out, retval]
|
 |