Pregunta
Estoy transfiriendo un código C # a vb.net, actualmente estoy tratando de descubrir cómo hacer esto ...
byte isEndReached = //get some data
if (isEndReached != 0)
{
for (int y = 0; y < isEndReached ; y++)
{
//do some stuff
}
}
Mi intento:
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
El problema es que recibo el siguiente error:
El operador'Is' no acepta operandos de tipo 'Byte'. Los operandos deben ser de referencia o tipos anulables.
¿Cómo se supone que voy a arreglar esto?
¡Gracias!
Solución
No puede usar Is
con tipos de valor. Del mismo modo, Nothing
tiene un significado diferente para los tipos de valor que para los tipos de referencia. Puedes escribirlo así:
If isEndReached <> 0 Then
o como este:
If isEndReached <> Nothing Then
y mirando su código, en realidad lo escribiría así en caso de que la función de alguna manera devuelva un valor negativo para el byte:
If isEndReached > 0 Then
o declare alternativamente su byte en la línea anterior y luego simplemente repita mientras sea menor que isEndReached:
Dim y As Byte
While y < isEndReached
''...
y += 1
End While
Su For
tampoco tiene exactamente el mismo significado que el código C #, pero en realidad debería ser una coincidencia mejor : está comparando bytes con bytes en lugar de que ints a bytes.