2012-01-03 11 views
5

Basit soru: İki kat fazla değişken var. Onlara "null" durumu depolayabilmek istiyorum, yani değişkenin geçerli veri içermediğini gösterebilmem gerekiyor. Gerçekten her çifte boolean "geçerli" değişkeni ilişkilendirmeyeceğim, çirkin ve muhtemelen gereksizdir.VB.Net 2010'da null değerini bir çiftte nasıl kullanırım?

dim someDouble as Double? 

(soru işareti Not):

Birincisi, bir 'IsNothing' kontrol edilecek kavramını izin farklı değişken bildirmek zorundadır öğrendim, bu yüzden bunu. Bunu böyle bildirmezseniz, hata denetimi bana "IsNot, referans türlerine sahip işlenenler gerektirir" iletisini verir.

kez someDouble IsNot Nothing olmadığını denetler benim if/else deyiminde kod çalışır çünkü hiçbir zaman, değişken için ...
someDouble = Nothing 

... sıfır olarak ayarlayın görünüyor ayarlama ilan etti. .. kötü olan değişken, geçerli bir veri parçası olarak 0 değerini yasal olarak saklayabildiği için.

Burada nelerin eksik? Teşekkürler!

DÜZENLEME: Bir sınıfta özellikleri Get ve Set bu değerleri kullandığımı dışarıda bıraktım. Property 'utürünü Double? yerine, Nothing değeri yerine sıfıra geri döndüğümde bıraktığım gibi çıkıyor. Yine de, aşağıdaki cevaplarda hala faydalı bilgiler!

cevap

7

MSDN

üzerinde Nullable Structure okumaya gitmeli bu nasıl kullanılacağını açıklayacağız o

örnek:

Sub Main() 
    Dim someDouble As Double? 

    someDouble = Nothing 
    If someDouble.HasValue Then 
     Console.WriteLine(someDouble.ToString) 
    Else 
     Console.WriteLine("someDouble is nothing/null") 
    End If 
    Console.Read() 
End Sub 
+0

@BalaR, evet, – Fredou

+0

Aha, bu aslında şu anda yaptığım şeydi ... benim dışımda kaldım ve "Mülkümüzü" değiştirmeyi unuttum. 'Double' dan, 'Set' yaparken bunu standart bir 'Double' a geri çeviriyordu. Ahh! Link için teşekkürler! – evilspoons

4

ben "Hiçbir şey" ile ne sorunlara neden olduğunu bilmiyorum iken , bunun yerine "Double.NaN" (Numara Değil) kullanabilirsiniz. Bu da özel "Çift?" beyanı.

+0

Harika bir fikir! Sanırım Nothing (null) yaklaşımı yerine bunu deneyeceğim. Fredou'nun neden bir şeyle çalışmadığı konusundaki cevabını görün. – evilspoons

İlgili konular