如何调试C#错误c5266?
错误: CS0266无法将类型“byte”隐式转换为“sbyte”。存在显式转换 代码:如何调试C#错误c5266?,c#,C#,错误: CS0266无法将类型“byte”隐式转换为“sbyte”。存在显式转换 代码: 您希望下面的语句返回sbyte public sbyte ReadSByte() 但是您返回了一个字节值 byte[] arg_17_0 = this._buffer; return arg_17_0[position]; 由于您的方法签名指示它将返回sbyte,并且该方法的调用者希望返回,因此您应该返回sbyte。因此,您需要将字节转换为sbyte,然后返回该字节。像这样: return unch
您希望下面的语句返回sbyte
public sbyte ReadSByte()
但是您返回了一个字节值
byte[] arg_17_0 = this._buffer;
return arg_17_0[position];
由于您的方法签名指示它将返回
sbyte
,并且该方法的调用者希望返回,因此您应该返回sbyte
。因此,您需要将字节转换为sbyte
,然后返回该字节。像这样:
return unchecked((sbyte)arg_17_0[position]);
以下是一些有关选中的关键字的信息,以防您感兴趣(但上面没有它也可以):
因为检查溢出需要时间,所以在没有溢出危险的情况下使用未经检查的代码可能会提高性能。但是,如果可能出现溢出,则应使用已检查的环境
当函数ask for asbyte
@CodingYoshi OP没有尝试返回字节数组时,您正在返回一个字节。实际上,C编译器默认使用unchecked进行数学运算。
return unchecked((sbyte)arg_17_0[position]);