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...
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.
Dim Numero As Nullable(Of Integer) = Nothing If Numero <> Nothing Then MessageBox.Show("Numero on annettu") End If
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?
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.
Kiitos vastanneille!
Aihe on jo aika vanha, joten et voi enää vastata siihen.