Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否+;=运算符确保在C#中进行显式转换或隐式强制转换?_C#_.net_Casting_Clr - Fatal编程技术网

是否+;=运算符确保在C#中进行显式转换或隐式强制转换?

是否+;=运算符确保在C#中进行显式转换或隐式强制转换?,c#,.net,casting,clr,C#,.net,Casting,Clr,下面的示例编译: public static void Main() { Byte b = 255; b += 100; } 但下面这个失败了 public static void Main() { Byte b = 255; b = b + 100; } 与 错误1无法将类型“int”隐式转换为“byte”。存在显式转换(是否缺少强制转换?) 这是否意味着对于C++=运算符提供了显式转换?Eric Lippert回答了

下面的示例编译:

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

}
但下面这个失败了

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

错误1无法将类型“int”隐式转换为“byte”。存在显式转换(是否缺少强制转换?)


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

Eric Lippert回答了您的问题

预定义复合运算符的另一个有趣方面是 如果有必要,演员阵容——据称是“明确”的转换——是必要的 以您的名义隐式插入。如果你说

short s = 123;
s += 10;
因为short+int是int,所以不分析为s=s+10, 所以作业不好。这实际上被分析为

s = (short)(s + 10);
因此,如果结果溢出一个短路,它将自动削减 适合你的尺寸


另请参见。

很好的链接,这是您的答案谢谢!顺便说一句,我偶然发现了它,并大吃一惊。谢谢你的链接!我会在7分钟内接受你的回答:)如果你读了第二部分,别忘了看它发布的日期,或者至少是文章底部的更新。@svick:你真的需要这么说吗?:)简洁不是我的强项。