Pergunta
Estou portar algum código C # para vb.net, atualmente tentando descobrir como fazer isso ..
byte isEndReached = //get some data
if (isEndReached != 0)
{
for (int y = 0; y < isEndReached ; y++)
{
//do some stuff
}
}
Minha tentativa:
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
O problema é que eu estou recebendo o seguinte erro:
operador 'é' não aceita operandos do tipo 'Byte'. Operandos devem ser de referência ou anuláveis ??tipos.
Como é que eu vou corrigir isso?
Obrigado!
Solução
Você não pode usar Is
com tipos de valor. Da mesma forma, Nothing
tem um significado diferente para tipos de valor do que para os tipos de referência. Você pode apenas escrevê-lo como este:
If isEndReached <> 0 Then
ou menos assim:
If isEndReached <> Nothing Then
e olhando para o seu código, eu realmente escrever assim no caso da função de alguma forma retorna um valor negativo para o byte:
If isEndReached > 0 Then
ou, alternativamente, declarar a sua byte na linha anterior e depois é só loop while é inferior a isEndReached:
Dim y As Byte
While y < isEndReached
''...
y += 1
End While
Seu For
não tem exatamente o mesmo significado que o código C #, quer, mas ele realmente deve ser um melhor correspondência- você está comparando bytes para bytes em vez de ints para bytes.