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]
|
|