2017-05-12 8 views
-2

エラー:C#エラーc5266をデバッグするには?

CS0266 Cannot implicitly convert type 'byte' to 'sbyte'. An explicit conversion exists

コード:

public sbyte ReadSByte() 
     { 
      byte[] arg_17_0 = this._buffer; 
      int position = this._position; 
      this._position = position + 1; 
      return arg_17_0[position]; 
     } 
+0

機能が尋ねるときは、 'byte'を戻ってきている。このような'sbyte'のために。 –

+0

@ CodeYoshi OPはバイト配列を返そうとしていません。 –

答えて

0

あなたは以下の文からsbyteリターンを期待しています。

public sbyte ReadSByte() 

ただし、バイト値が返されました。

byte[] arg_17_0 = this._buffer; 
return arg_17_0[position]; 
1

あなたのメソッドのシグネチャは、それがsbyteを返します示しており、この方法の発信者があなたがsbyteを返すべきである、ということを期待しますので。したがって、byteからsbyteにキャストして返す必要があります。ここで

return unchecked((sbyte)arg_17_0[position]); 

はあなたが興味を持っている(ただし、上記あまりにもそれなしで動作する)場合checkedキーワードに関するいくつかの情報です:

Because checking for overflow takes time, the use of unchecked code in situations where there is no danger of overflow might improve performance. However, if overflow is a possibility, a checked environment should be used.

+0

実際には、C#コンパイラはデフォルトで数学では未チェックを使用します。 –

関連する問題