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!
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.