如何调试C#错误c5266?

如何调试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

错误:

CS0266无法将类型“byte”隐式转换为“sbyte”。存在显式转换

代码:


您希望下面的语句返回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 a
sbyte
@CodingYoshi OP没有尝试返回字节数组时,您正在返回一个
字节。实际上,C编译器默认使用unchecked进行数学运算。
return unchecked((sbyte)arg_17_0[position]);