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
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
|
DATE
[a]
|
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
|
[a] COM dates are less precise, causing comparison problems. |
Table C-2 shows the mapping of the C# modifiers to their equivalent COM interface attributes.
Table C-2. C# modifier/COM attribute mapping
C# Modifier |
COM Attribute |
---|---|
<no modifier> |
[in]
|
out
|
[out]
|
ref
|
[in, out]
|
<return value> |
[out, retval]
|
Get C# in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.