我正在将一些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'类型的操作数。操作数必须是引用或可空类型。
我该如何解决这个问题?
谢谢!
答案 0 :(得分:2)
您不能将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#代码的含义完全不同,但它实际上应该是更好的匹配 - 你要比较字节到字节而不是ints到字节。