首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个表达式有什么问题?无法将类型'int‘隐式转换为'byte’

这个表达式有什么问题?无法将类型'int‘隐式转换为'byte’
EN

Stack Overflow用户
提问于 2010-11-08 20:25:47
回答 5查看 15.1K关注 0票数 10

我收到错误消息“无法隐式地将类型'int‘转换为'byte’。存在显式转换(您是否缺少强制转换?)”。byte + byte = byte不是吗?此外,我注意到当我删除+rgb.Green时,它可以正常工作

代码语言:javascript
复制
// rgb.Red, rgb.Green, rgb.Blue are byte types
// h, delta are double
rgb.Red = Convert.ToByte(Math.Round((h - 4) * delta)) + rgb.Green;

public struct RGBColor
{
    public byte Red { get; set; }
    public byte Green { get; set; }
    public byte Blue { get; set; }
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-08 20:28:19

不是字节+字节=字节吗?

不,因为它可能溢出(> 255),这就是为什么这个操作返回一个Int32。您可以将结果转换回byte,风险自负。

票数 13
EN

Stack Overflow用户

发布于 2010-11-08 20:28:48

将两个字节相加,在C#中生成一个整数。将整个内容转换回一个字节。

代码语言:javascript
复制
rgb.Red = (byte)(Convert.ToByte(Math.Round((h - 4) * delta)) + rgb.Green);

有关详细信息,请参阅byte + byte = int... why?

票数 16
EN

Stack Overflow用户

发布于 2010-11-08 20:29:09

http://msdn.microsoft.com/en-us/library/5bdb6693(VS.71).aspx

字节+字节=整型

更准确地说,框架没有在byte上定义运算符+,但是有一个从byte到int的隐式转换,到

字节+字节= int + int = int

我不太同意这样做的理由,因为它可能会溢出,因为可能是int + int。但显然字节运算在这方面更“危险”--这种行为迫使你仔细观察你正在做的事情。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4123788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档