严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS0266 无法将类型“int”隐式转换为“byte”。存在一个显式转换(是否缺少强制转换?)

stevenjin 2020-06-21 10:49:45
下面这个代码,调用他的dll时不报错。但编译源码时报错

public static string Lrc(string sPro) {
sPro.ToUpper();
int length = sPro.Length;
byte b = 0;
string[] array = new string[length / 2];
int num;
for (int i = 0; i < length / 2; i = num + 1) {
array[i] = sPro.Substring(i * 2, 2);
b += (byte)Convert.ToUInt16(array[i], 16);
num = i;
}
b = 255 - b;
b += 1;
string text = Convert.ToString(b, 16);
bool flag = text.Length < 2;
if (flag) {
text = "0" + text;
}
return text;
}
...全文
5298 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
stevenjin 2020-06-29
  • 打赏
  • 举报
回复
但为什么打包的dll就不报错,不知他做了什么处理?
iiii5268 2020-06-22
  • 打赏
  • 举报
回复
255直接写出来会默认成int类型,参与运算后好像有个精度优先原则(不知道是不是叫这个)是说在运算中会把所有参与运算的变量自动转换为这些变量中精度较高的类型,所以,你的原来代码会报错。然后再说你不报错的这一句,就是将提升了精度的数((255-b)类型为int)强制转换为byte,运行不会错,但语法角度建议只转换255这个数字。
stevenjin 2020-06-21
  • 打赏
  • 举报
回复
我发现这样可以不报错,做法对吗? b =(byte)( 255 - b);

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧