Проблема с байтом в VB.NET - PullRequest
0 голосов
/ 03 августа 2009

Я портирую код 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 Ответ

2 голосов
/ 03 августа 2009

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

...