この言語には、いくつかの暗黙的な変換が組み込まれています。
次の表はドキュメントからのものです。これが、明示的なキャストまたは変換なしで値を割り当てることが許可されている理由です。
From To
===============================================================================
sbyte short , int, long, float, double, or decimal
byte short , ushort, int, uint, long, ulong, float, double, or decimal
short int , long, float, double, or decimal
ushort int , uint, long, ulong, float, double, or decimal
int long , float, double, or decimal
uint long , ulong, float, double, or decimal
long float , double, or decimal
char ushort , int, uint, long, ulong, float, double, or decimal
float double
ulong float , double, or decimal
そして、ドキュメントには次のように記載されています(強調は私のものです):
int、uint、long、または ulong から float への変換、およびlong または ulong から doubleへの変換では、大きさではなく精度が失われる可能性があります。