Domanda
Sto eseguendo il porting del codice c # su vb.net, attualmente sto cercando di capire come farlo ..
byte isEndReached = //get some data
if (isEndReached != 0)
{
for (int y = 0; y < isEndReached ; y++)
{
//do some stuff
}
}
Il mio tentativo:
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
Il problema è che visualizzo il seguente errore:
L'operatore 'Is' non accetta operandi di tipo 'Byte'. Gli operandi devono essere tipi di riferimento o nullable.
Come dovrei risolvere questo problema?
Grazie!
Soluzione
Non puoi usare Is
con tipi di valore. Allo stesso modo, Nothing
ha un significato diverso per i tipi di valore rispetto ai tipi di riferimento. Puoi semplicemente scriverlo in questo modo:
If isEndReached <> 0 Then
o in questo modo:
If isEndReached <> Nothing Then
e guardando il tuo codice, lo scriverei in questo modo nel caso in cui la funzione restituisca in qualche modo un valore negativo per il byte:
If isEndReached > 0 Then
o in alternativa dichiara il tuo byte sulla riga precedente e poi esegui il loop mentre è inferiore a isEndReached:
Dim y As Byte
While y < isEndReached
''...
y += 1
End While
Il tuo per
non ha lo stesso identico significato del codice C #, ma in realtà dovrebbe essere una corrispondenza migliore : stai confrontando i byte con i byte piuttosto di ints in byte.