c# - 由于某种原因,字节乘以字节是 int。为什么?无法将类型 'int' 隐式转换为 'byte' 。存在显式转换

标签 c# .net casting type-conversion

我有这段代码,但由于某种原因它不起作用。我不明白。怎么了?

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/

相关文章:

c# - Access DB - 操作必须使用可更新查询

.net - SQL Server CE 和 Visual Studio 2013

c - 了解类型转换

java - 我在滥用/误用 Java 反射吗?

c# - 如何在不创建 ViewModel 对象的情况下指定 DataContext (ViewModel) 类型以在 XAML 编辑器中进行设计时绑定(bind)检查?

c# - 将复选框/单选按钮 boolean 值保存到全局变量

c# - 局部变量和垃圾生成

c# - 发送击键 C# 的最快方法

c# - 设计模式中枚举的替代方案

Java 泛型 : Unchecked cast from List<capture#10-of ? > 到 List<Object>