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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top