我正在将一些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'类型的操作数。操作数必须是引用或可空类型。

我该如何解决这个问题?

谢谢!

有帮助吗?

解决方案

您不能将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#代码的含义完全不同,但它实际上应该是更好的匹配 - 您要将字节与字节进行比较,而不是将int与字节进行比较。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top