Frage
Ich bin Portierung einig c # -Code vb.net, zur Zeit, um herauszufinden, wie dies zu tun ..
byte isEndReached = //get some data
if (isEndReached != 0)
{
for (int y = 0; y < isEndReached ; y++)
{
//do some stuff
}
}
Mein Versuch:
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
Problem ist Ich erhalte die folgende Fehlermeldung:
'Is' Operator nicht Operanden vom Typ 'Byte' akzeptieren. Operanden müssen Referenz- oder Nullable-Typ sein.
Wie soll ich dieses Problem beheben?
Danke!
Lösung
Sie können nicht Is
mit Werttypen verwenden. Ebenso hat Nothing
eine andere Bedeutung für Werttypen als Referenz-Typen. Sie können es einfach schreiben wie folgt aus:
If isEndReached <> 0 Then
oder wie folgt aus:
If isEndReached <> Nothing Then
und auf den Code suchen, würde ich es dies schreibe tatsächlich wie im Falle der Funktion irgendwie einen negativen Wert für das Byte zurückgibt:
If isEndReached > 0 Then
oder alternativ Ihr Byte in der vorhergehenden Zeile deklariert und dann die Schleife nur während es weniger als isEndReached:
Dim y As Byte
While y < isEndReached
''...
y += 1
End While
Ihr For
nicht die exakt gleiche Bedeutung wie der C # -Code entweder, aber es sollte eigentlich ein besser Match- Sie vergleichen Bytes Bytes anstatt ints Bytes sein.