Evo*_*lor 4 c# java casting implicit-conversion explicit-conversion
您可以隐式地将int转换为double: double x = 5;
您可以显式地将int转换为double: double x = (double) 5;
您可以显式地将double转换为int: int x = (int) 5.0;
为什么不能隐式地将double转换为int?: int x = 5.0;
Ayd*_*din 17
只有在保证转换不会导致数据丢失时,才能使用隐式转换.所以,你可以施放integer到一个double或integer一个long数据类型.然而,从a转换为a double会integer冒丢失数据的风险.
Console.WriteLine ((int)5.5);
// Output > 5
Run Code Online (Sandbox Code Playgroud)
这就是Microsoft没有为此特定转换编写隐式转换的原因..NET框架会强制您使用显式强制转换来确保您通过从一种类型明确地转换为另一种类型来做出明智的决策.
implicit关键字用于声明隐式用户定义的类型转换运算符.如果保证转换不会导致数据丢失,则使用它来启用用户定义类型与其他类型之间的隐式转换.
来源 > MSDN
Sel*_*enç 16
范围double宽于int.这就是你需要明确演员的原因.由于同样的原因,你不能隐式地转换long为int:
long l = 234;
int x = l; // error
Run Code Online (Sandbox Code Playgroud)