2009-08-02 5 views
0

Ich Portierung einige C# -Code vb.net, zur Zeit, um herauszufinden, wie dies zu tun ..VB.NET Byte Problem

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 bekomme folgenden Fehler:

'Is' -Operator akzeptiert keine Operanden vom Typ 'Byte'. Operanden müssen Referenz- oder NULL-Typen sein.

Wie soll ich das beheben?

Danke!

+0

Wenn Sie Code portieren, warum ändern Sie ihn? Der ursprüngliche Code hat verifiziert, dass isChecked ungleich Null ist, aber Sie haben ihn geändert, um ihn mit Nothing zu vergleichen. Außerdem wurde der Typ der Variablen "y" geändert (int => Byte). Irgendwelche Gründe für diese Änderungen? –

Antwort

2

Sie können Is nicht mit Werttypen verwenden. Ebenso hat Nothing für Werttypen eine andere Bedeutung als für Referenztypen. Sie können es einfach so schreiben:

If isEndReached <> 0 Then 

oder so:

If isEndReached <> Nothing Then 

und in Ihrem Code suchen, würde ich es eigentlich schreiben wie dies im Falle der Funktion irgendwie einen negativen Wert zurückgibt für das Byte:

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 

Ihre For nicht genau die gleiche Bedeutung wie die entweder C# -Code, aber es sollte eigentlich ein besser sein Match- sind Sie Bytes Bytes anstatt ints Bytes zu vergleichen.

+0

Danke! Ich verwende If isEndReached <> 0 Dann funktioniert es genau so, wie ich es wollte. –

Verwandte Themen