我最近了解到,在将一些 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是否允许其他类似的情况?