Проблема с байтом в 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#, но на самом деле оно должно быть лучше: вы сравниваете байты с байтами, а не с байтами.

Другие вопросы по тегам