我有这段代码,由于某种原因,它无法正常工作。我不明白怎么了?

byte dog = (byte)2*byte.Parse("2");


我在LinqPad中收到此异常:“无法将类型'int'隐式转换为'byte'。存在显式转换(您是否缺少类型转换?)。”

另外,编写此代码的正确方法是什么?谢谢。

最佳答案

sbyte,byte,ushort和short上的所有算术运算都扩展为int。
例如,第三行将给出编译器错误:

byte b1 = 1;
byte b2 = 2;
byte b3 = (b1 * b2); // Exception, Cannot implicitly convert type 'int' to 'byte
byte b4 = (byte)(b1 * b2); // everything is fine


因此,将代码更改为:

byte dog = (byte)((byte)2*byte.Parse("2"));


有关更多信息:Look at this SO question

关于c# - 出于某种原因,字节乘以字节为int。为什么?无法将类型'int'隐式转换为'byte'。存在显式转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28135143/

10-15 11:42