pen*_*ake 9 .net c# clr casting
以下示例编译:
public static void Main()
{
Byte b = 255;
b += 100;
}
Run Code Online (Sandbox Code Playgroud)
但下面的这个失败了
public static void Main()
{
Byte b = 255;
b = b + 100;
}
Run Code Online (Sandbox Code Playgroud)
同
错误1无法将类型'int'隐式转换为'byte'.存在显式转换(您是否错过了演员?)
这是否意味着对于C#+ =运算符提供了EXPLICIT转换?
SLa*_*aks 11
埃里克利珀回答了你的问题连篇累牍.
预定义复合运算符的另一个有趣的方面是,如果有必要,代表您隐式插入一个演员 - 一个涉嫌"明确"的转换.如果你说
Run Code Online (Sandbox Code Playgroud)short s = 123; s += 10;然后不分析为s = s + 10因为short plus int是int,所以赋值是坏的.这实际上被分析为
Run Code Online (Sandbox Code Playgroud)s = (short)(s + 10);因此,如果结果溢出短路,它会自动缩减为适合您的尺寸.
另见第二部分.
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |