Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [VB.Net] Numeromuuttujan arvoksi Nothing tms.

novice [08.10.2010 18:43:20]

#

Double taulukkoon annetaan X,Y yms koordinaatteja. Kaikkia arvoja ei ole välttämätöntä antaa. Pitäsi kuitenkin jälkikäteen tietää onko arvoa annettu vai ei.
Double muuttujahan alustetaan automaattisesti 0.0:ksi ja 0 on myös mahdollista syöttää muuttujan arvoksi.

Joten, miten saan tietoon onko arvoa annettu vai ei?
Pitääkö jokaiselle muuttujalle luoda rinnakkainen boolean muuttuja josta ko. tieto selviää, vai onko ongelmaan jotain muuta yleistä keinoa jota en vain nyt hoksaa?

EDIT: Nythän mä vasta hokasin käyttää string muuttujaa. Mutta jos muita tapoja löytyy, niin antaa tulla vaan...

Metabolix [08.10.2010 18:56:59]

#

Muuttujatyypin vaihto on hyvien tapojen vastainen ratkaisu.

Kielestä riippumaton ratkaisu on tallentaa yhteen taulukkoon luvut ja toiseen taulukkoon arvon True tai False sen mukaan, onko luku annettu. Monilla kielillä voi myös asettaa liukuluvun arvoksi NaN (VB.Netissä Double.NaN), ja tämän arvon voi sitten tarkistaa jollain (VB.Netissä funktiolla Double.IsNaN). (NaN eli Not a Number on arvo, joka tulee laittomista laskutoimituksista; esimerkiksi nolla jaettuna nollalla on NaN.) Ehkä VB.Netissä on jokin vielä kätevämpi tapa.

groovyb [08.10.2010 19:25:16]

#

Dim Numero As Nullable(Of Integer) = Nothing

If Numero <> Nothing Then

MessageBox.Show("Numero on annettu")

End If

Grez [08.10.2010 19:28:33]

#

Saako muuten tuon nollaksi alustamisen pois VB.Netissä? C# ilmoittaa jo koodatesa jos yrittää käyttää muuttujaa jota ei ole alustettu, joka ehkäisee tehokkaasti tietyn tyyppisiä virheitä. Tällainen ei tietenkään toimisi jos muuttujat sielläkin alustettaisiin "talon puolesta".

Myöskin tuo Nullable(of Tyyppi) on huomattavasti kätevämpi C# puolella: tyyppi?

groovyb [08.10.2010 19:39:47]

#

en usko Grez, olen ainakin ymmärtänyt että se on eräs vb:n "helppous" tekijöistä, ettei muuttujia tarvitse alustaa. Kertokaa toki ihmeessä jos joku tietää muunlaisen keinon kuin nullablen käytön, tulisi varmasti monelle tarpeeseen.

novice [08.10.2010 21:00:56]

#

Kiitos vastanneille!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta