繁体   English   中英

+ =运算符是否确保在C#中进行EXPLICIT转换或隐式CASTING?

[英]Does += operator ensures an EXPLICIT conversion or implicit CASTING in C#?

以下示例编译:

public static void Main()
{
    Byte b = 255;
    b += 100;

}

但下面的这个失败了

   public static void Main()
    {
        Byte b = 255;
        b = b + 100;
    }

错误1无法将类型'int'隐式转换为'byte'。 存在显式转换(您是否错过了演员?)

这是否意味着对于C#+ =运算符提供了EXPLICIT转换?

埃里克利珀回答了你的问题连篇累牍

预定义复合运算符的另一个有趣的方面是,如果有必要,代表您隐式插入一个演员 - 一个涉嫌“明确”的转换。 如果你说

 short s = 123; s += 10; 

然后不分析为s = s + 10因为short plus int是int,所以赋值是坏的。 这实际上被分析为

 s = (short)(s + 10); 

因此,如果结果溢出短路,它会自动缩减为适合您的尺寸。

另见第二部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM