0

私はいくつかのc#コードをvb.netに移植しており、現在これを行う方法を見つけようとしています..

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 許容型である必要があります。

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

ありがとう!

4

1 に答える 1

2

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# コードとまったく同じ意味ではありませんが、実際にはより適切に一致するはずです。int とバイトではなく、バイトとバイトを比較しています。

于 2009-08-02T23:47:14.170 に答える