Вопрос

Я переношу некоторый код С# на 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.Операнды должны быть ссылочными или допускающими значение NULL типами.

Как мне это исправить?

Спасибо!

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top