2009-08-02 5 views
0

나는 현재이 작업을 수행하는 방법을 알아 내려고 노력하고, vb.net 일부 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 

문제는 I이다 다음 오류가 발생합니다.

'Is'연산자가 'Byte'유형의 피연산자를 허용하지 않습니다. 피연산자는 참조 또는 Null 가능 유형이어야합니다.

어떻게 수정해야합니까?

감사합니다.

+0

코드를 포팅하는 경우 왜 코드를 변경하고 있습니까? 원래 코드는 isChecked가 0과 다르다는 것을 확인했지만 Nothing과 비교하도록 변경했습니다. 또한 변수 "y"의 유형이 변경되었습니다 (int => byte). 이러한 변경 사항에 대한 이유는 무엇입니까 ?? –

답변

2

Is에는 값 유형을 사용할 수 없습니다. 마찬가지로 Nothing은 참조 유형보다 값 유형에 대해 다른 의미를 갖습니다. 당신은이처럼 쓸 수 있습니다 :

If isEndReached <> 0 Then 

또는 다음과 같이 :

If isEndReached <> Nothing Then 

하고 코드를보고, 나는 실제로 함수가 어떻게 든 위해 음수 값을 반환하는 경우에는이처럼 써서 바이트 : 그것은 isEndReached보다있는 동안

If isEndReached > 0 Then 

또는 대안이 이전 라인에 바이트 후 바로 루프를 선언

Dim y As Byte 
While y < isEndReached 
    ''... 
    y += 1 
End While 

귀하의 For 중 하나를 C# 코드와 동일한 의미를 가지고 있지 않지만,이 바이트로 바이트가 아닌 int 치의 바이트를 비교하는에 일치하는 실제로더해야한다.

+0

감사합니다. If isEndReached <> 0 Then Then을 사용하고 있습니다. 원하는대로 작동합니다. –