我收到错误"无法将类型'int'隐式转换为'byte'.存在显式转换(您是否错过了转换?)".不是byte + byte = byte吗?当我删除+rgb.Green它工作时我也注意到了
// 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; }
}
Run Code Online (Sandbox Code Playgroud)
Pie*_*kel 16
添加两个字节会在C#中生成一个整数.将整个事物转换回一个字节.
rgb.Red = (byte)(Convert.ToByte(Math.Round((h - 4) * delta)) + rgb.Green);
Run Code Online (Sandbox Code Playgroud)
请参见byte + byte = int ...为什么?欲获得更多信息.
http://msdn.microsoft.com/en-us/library/5bdb6693(VS.71).aspx
byte + byte = int
更准确的说,框架没有定义operator + on byte,但是有一个从byte到int的隐式转换
byte + byte = int + int = int
我不太同意这种情况可能会溢出,因为int + int也是如此.但显然字节算法在这方面更加"危险" - 这种行为迫使你仔细研究你在做什么.
| 归档时间: |
|
| 查看次数: |
14617 次 |
| 最近记录: |