Keyword | Description | Default Initializer (.init) | ||||||
---|---|---|---|---|---|---|---|---|
void | no type | - | ||||||
bit | single bit | false | ||||||
byte | signed 8 bits | 0 | ||||||
ubyte | unsigned 8 bits | 0 | ||||||
short | signed 16 bits | 0 | ||||||
ushort | unsigned 16 bits | 0 | ||||||
int | signed 32 bits | 0 | ||||||
uint | unsigned 32 bits | 0 | ||||||
long | signed 64 bits | 0L | ||||||
ulong | unsigned 64 bits | 0L | ||||||
cent | signed 128 bits (reserved for future use) | 0 | ||||||
ucent | unsigned 128 bits (reserved for future use) | 0 | ||||||
float | 32 bit floating point | float.nan | ||||||
double | 64 bit floating point | double.nan | ||||||
real | largest hardware implemented floating point size (Implementation Note: 80 bits for Intel CPU's) | real.nan | ||||||
ifloat | imaginary float | float.nan * 1.0i | ||||||
idouble | imaginary double | double.nan * 1.0i | ||||||
ireal | imaginary real | real.nan * 1.0i | ||||||
cfloat | a complex number of two float values | float.nan + float.nan * 1.0i | ||||||
cdouble | complex double | double.nan + double.nan * 1.0i | ||||||
creal | complex real | real.nan + real.nan * 1.0i | ||||||
char unsigned 8 bit UTF-8 | 0xFF
| wchar | unsigned 16 bit UTF-16 | 0xFFFF
| dchar | unsigned 32 bit UTF-32 | 0x0000FFFF
| |
A typedef can be implicitly converted to its underlying type, but going the other way requires an explicit conversion. For example:
typedef int myint; int i; myint m; i = m; // OK m = i; // error m = cast(myint)i; // OK
from | to |
---|---|
bit | int |
byte | int |
ubyte | int |
short | int |
ushort | int |
char | int |
wchar | int |
dchar | uint |
If a typedef or enum has as a base type one of the types in the left column, it is converted to the type in the right column.
Delegates are declared similarly to function pointers, except that the keyword delegate takes the place of (*), and the identifier occurs afterwards:
int function(int) fp; // fp is pointer to a function int delegate(int) dg; // dg is a delegate to a functionThe C style syntax for declaring pointers to functions is also supported:
int (*fp)(int); // fp is pointer to a functionA delegate is initialized analogously to function pointers:
int func(int); fp = &func; // fp points to func class OB { int member(int); } OB o; dg = &o.member; // dg is a delegate to object o and // member function memberDelegates cannot be initialized with static member functions or non-member functions.
Delegates are called analogously to function pointers:
fp(3); // call func(3) dg(3); // call o.member(3)