最近、いくつかのJavaコードをC#に変換しているときに、Javaのインクリメント演算子「+=」が暗黙的にLHSのタイプにキャストされることを学びました。
int i = 5;
long lng = 0xffffffffffffL; //larger than Int.MAX_VALUE
i += lng; //allowed by Java (i==4), rejected by C#
と同等です:(詳細はこちら)
int i = 0;
long lng = 0xffffffffffffL;
i = (int)(i + lng);
したがって、静かに大きさを失う機会を引き起こします。
C#は、コンパイル時にこれについてより良心的です。
Cannot convert source type long to target type int.
Javaで許可されている他の同様の状況はありますか?