Domanda

Sto eseguendo il porting del codice c # su vb.net, attualmente sto cercando di capire come farlo ..

byte isEndReached = //get some data

if (isEndReached != 0)
{
   for (int y = 0; y < isEndReached ; y++)
   {
     //do some stuff
   }

}

Il mio tentativo:

 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

Il problema è che visualizzo il seguente errore:

L'operatore 'Is' non accetta operandi di tipo 'Byte'. Gli operandi devono essere tipi di riferimento o nullable.

Come dovrei risolvere questo problema?

Grazie!

È stato utile?

Soluzione

Non puoi usare Is con tipi di valore. Allo stesso modo, Nothing ha un significato diverso per i tipi di valore rispetto ai tipi di riferimento. Puoi semplicemente scriverlo in questo modo:

If isEndReached <> 0 Then

o in questo modo:

If isEndReached <> Nothing Then

e guardando il tuo codice, lo scriverei in questo modo nel caso in cui la funzione restituisca in qualche modo un valore negativo per il byte:

If isEndReached > 0 Then

o in alternativa dichiara il tuo byte sulla riga precedente e poi esegui il loop mentre è inferiore a isEndReached:

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

Il tuo per non ha lo stesso identico significato del codice C #, ma in realtà dovrebbe essere una corrispondenza migliore : stai confrontando i byte con i byte piuttosto di ints in byte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top