Zgodnie ze standardem języka C#, a konkretnie §2.4.4.2 on integer literals:
Typ integer dosłownym określa się następująco :
- Jeśli literał nie ma sufiksu, ma pierwszy z tych typów, w którym może być reprezentowana jego wartość ted:
int
, uint
, long
, ulong
.
- Jeśli literał ma przyrostek
U
lub u
, ma on pierwszy z tych typów, w którym jego wartość może być reprezentowana: uint
, ulong
.
- Jeśli literał ma przyrostek
L
lub l
, ma on pierwszy z tych typów, w którym jego wartość może być reprezentowana: long
, ulong
.
- Jeśli dosłowny jest sufiksem
UL
, Ul
, uL
, ul
, LU
, Lu
, lU
lub lu
, to jest typu ulong
.
Pierwsza zasada to wszystko, co należy tutaj zastosować. Dosłowny 0
nie ma przyrostka i może być reprezentowany jako typ int
(lub, w kategoriach BCL, Int32
), więc jest to typ, który ma.
Jak można wywnioskować z powyższego, aby zmienić typ literału, można do niego dodać przyrostek. Na przykład literał 0u
będzie typu uint
.Alternatywnie możesz jawnie rzucić literał na inny typ; na przykład: (short)0
spowoduje, że kompilator potraktuje literał jako short
.
Adrian, to punkt, który jest dość dobrze wyjaśniony w specyfikacji. – Joey
Wydaje się, że nie ma żadnego dosłownego skrótu :( – Dhananjay