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