Проблема с байтом в VB.NET
Я портирую некоторый код C# на vb.net, в настоящее время пытаюсь выяснить, как это сделать..
byte isEndReached = //get some data
if (isEndReached != 0)
{
for (int y = 0; y < isEndReached ; y++)
{
//do some stuff
}
}
Моя попытка:
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
Проблема в том, что я получаю следующую ошибку:
Оператор 'Is' не принимает операнды типа 'Byte'. Операнды должны быть ссылочными или обнуляемыми типами.
Как я должен это исправить?
Спасибо!
1 ответ
Вы не можете использовать Is
с типами значений. Точно так же, Nothing
имеет другое значение для типов значений, чем для ссылочных типов. Вы можете просто написать это так:
If isEndReached <> 0 Then
или вот так:
If isEndReached <> Nothing Then
и, глядя на ваш код, я на самом деле написал бы это так, если функция каким-то образом возвращает отрицательное значение для байта:
If isEndReached > 0 Then
или альтернативно объявите свой байт в предыдущей строке, а затем просто зациклите, пока он меньше, чем isEndReached:
Dim y As Byte
While y < isEndReached
''...
y += 1
End While
Ваш For
не имеет того же значения, что и код C#, но на самом деле оно должно быть лучше: вы сравниваете байты с байтами, а не с байтами.