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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top