Question

Je porte du code c # sur vb.net, j'essaie actuellement de comprendre comment faire cela.

byte isEndReached = //get some data

if (isEndReached != 0)
{
   for (int y = 0; y < isEndReached ; y++)
   {
     //do some stuff
   }

}

Ma tentative:

 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

Le problème est que je reçois le message d'erreur suivant:

L'opérateur 'Is' n'accepte pas les opérandes de type 'Byte'. Les opérandes doivent être des types référence ou nullable.

Comment suis-je censé résoudre ce problème?

Merci!

Était-ce utile?

La solution

Vous ne pouvez pas utiliser Is avec les types de valeur. De même, Nothing n'a pas la même signification pour les types valeur que pour les types référence. Vous pouvez simplement l'écrire comme ceci:

If isEndReached <> 0 Then

ou comme ceci:

If isEndReached <> Nothing Then

et en regardant votre code, je l’écrirais comme ceci au cas où la fonction renvoie en quelque sorte une valeur négative pour l’octet:

If isEndReached > 0 Then

ou déclarez également votre octet sur la ligne précédente, puis effectuez une boucle alors qu'il est inférieur à isEndReached:

Dim y As Byte
While y < isEndReached
    ''...
    y += 1
End While

Votre For n'a pas exactement la même signification que le code C #, mais il devrait s'agir d'une correspondance meilleure - vous comparez octets par octets que ints en octets.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top