質問

vb.netにC#コードを移植していますが、現在、これを行う方法を見つけようとしています。

byte isEndReached = //get some data

if (isEndReached != 0)
{
   for (int y = 0; y < isEndReached ; y++)
   {
     //do some stuff
   }

}

私の試み:

 Dim isEndReached As Byte = ''//getsomedata
 If Not isEndReached Is Nothing Then 
 For y As Byte = 0 To isEndReached - 1
     ''//do some stuff
 Next
 End If

問題は、次のエラーが発生していることです:

'Is'演算子は、タイプ 'Byte'のオペランドを受け入れません。オペランドは参照型またはnull入力可能な型である必要があります。

これを修正するにはどうすればよいですか

ありがとう!

役に立ちましたか?

解決

値型では Is を使用できません。同様に、 Nothing は、参照型と値型で意味が異なります。次のように書くことができます:

If isEndReached <> 0 Then

またはこのように:

If isEndReached <> Nothing Then

あなたのコードを見て、関数が何らかの理由でバイトの負の値を返す場合に備えて、実際に次のように記述します:

If isEndReached > 0 Then

または前の行でバイトを宣言し、isEndReached未満の間にループするだけです:

Dim y As Byte
While y < isEndReached
    ''...
    y += 1
End While

For もC#コードとまったく同じ意味を持ちませんが、実際には better に一致する必要があります。 intsからbytesまで。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top