是否+;=运算符确保在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:你真的需要这么说吗?:)简洁不是我的强项。