2009-08-02 16 views
0

私は現在、これを行う方法を把握しようと、vb.netにいくつかの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可能型でなければなりません。

どうすればこの問題を解決できますか?

ありがとうございます!

+0

コードを移植する場合、なぜそれを変更していますか?元のコードは、isCheckedがゼロ以外のものであることを確認しましたが、Nothingと比較するように変更しました。また、変数 "y"のタイプが変更されました(int => byte)。これらの変更の理由は何ですか? –

答えて

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型にバイトを比較しているmatch-それは実際に良いはずです。

+0

ありがとうございました!私はIf isEndReached <> 0を使用していますそれは私が欲しかったのと同じように動作します。 –

関連する問題