Dışarıya aktar (0) Yazdır
Tümünü Genişlet
Bu makale makine tarafından çevrilmiştir. Orijinal metni görmek için imlecinizi makaledeki cümlelerin üzerine getirin. Daha Fazla Bilgi.
Çeviri
Original

Boş Değer Atanabilen Değer Türleri (Visual Basic)

Bazen bazı durumlarda tanımlı değere sahip olmayan bir değer türü ile çalışır. Örneğin, bir veritabanında yer alan atanmış bir değere sahip değil ve anlamlı bir atanan değeri olması arasında ayrım gerekebilir. Değer türleri normal değerlerine veya boş değer olabilmesi için genişletilebilir. Böyle bir uzantı adı verilen bir null türü.

NULL olabilecek her tür genel oluşturulur Nullable<T> yapısı. Satışla ilişkili etkinlikleri izler veritabanı düşünün. Aşağıdaki örnek bir null yapıları Boolean yazın ve bu türde bir değişken bildirir. Bildirim üç yolla yazabilirsiniz:


Dim ridesBusToWork1? As Boolean
Dim ridesBusToWork2 As Boolean?
Dim ridesBusToWork3 As Nullable(Of Boolean)


Değişken ridesBusToWork bir değeri tutan True, değeri False, ya da hiç değeri yok. Başlangıçtaki varsayılan değerine değer, hangi bilgileri henüz bu kişinin elde edilmiş değil, bu durumda gelebilir değildir. Buna karşılık, False bilgileri elde edilmiş ve kişi çalışmak için bus ride değil anlamına gelebilir.

NULL olabilecek türleriyle değişkenler ve özellikleri bildirebilirsiniz ve bir dizi null olabilecek türdeki öğeleri ile bildirebilirsiniz. Yordam parametresi olarak null türleriyle bildirebilirsiniz ve null olabilecek türden dönebilirsiniz bir Function yordam.

Bir dizi gibi bir başvuru türü null olabilecek bir türde kurulamıyor bir String, ya da bir sınıf. Temel türü bir değer türü olmalıdır. Daha fazla bilgi için bkz. Değer Türleri ve Başvuru Türleri.

NULL türü en önemli üyesi olan kendi HasValue ve Value özellikleri. NULL türünde bir değişken için HasValue değişkeni tanımlı bir değer içerip içermediğine söyler. HasValue Olan True, değeri okuyabilirsiniz Value. Unutmayın her ikisi de HasValue ve Value olan ReadOnly özellikleri.

ms235245.collapse_all(tr-tr,VS.120).gifVarsayılan Değerler

NULL türü ile bir değişken bildirdiğinizde, HasValue özelliği olan bir varsayılan değeri False. Bu, varsayılan olarak tanımlı değeri, kendi temel değer türünün varsayılan değer yerine değişkenin yok anlamına gelir. Aşağıdaki örnekte, değişken numberOfChildren başlangıçta tanımlı değeri, varsayılan değeri bile yok Integer türü: 0.


Dim numberOfChildren? As Integer


Boş bir değer tanımlanmamış veya bilinmeyen bir değeri göstermek yararlıdır. numberOfChildren Olarak açýkdönüþtürme Integer, bilgileri şu anda kullanılamıyor oluşturabilecek herhangi bir değer olacaktır.

ms235245.collapse_all(tr-tr,VS.120).gifDeğerleri saklamak

Size bir değer bir değişkenin ya da özelliğin NULL türü normal yolla depolar. Aşağıdaki örnek, değişken bir değer atar numberOfChildren önceki örnekte bildirildi.


numberOfChildren = 2


Bir değişkenin veya özelliğin NULL türünde tanımlanmış bir değer içeriyorsa, atanmış bir değere sahip olmanın değil ilk durumuna geri döndürmek neden olabilir. Değişken veya özelliğini ayarlayarak bunu Nothing, aşağıdaki örnekte gösterildiği gibi.


numberOfChildren = Nothing


Not Not

Siz atayabilmenize rağmen Nothing null türündeki bir değişkene de sınayamazsınız Nothing eşittir işareti kullanarak. Eşittir işareti kullanır karşılaştırma someVar = Nothing, her zaman veren Nothing. Değişken test edebilirsiniz HasValue özelliği için False, veya sınama kullanarak Is veya IsNot işleci.

ms235245.collapse_all(tr-tr,VS.120).gifDeğerleri alma

NULL türünde bir değişken değerini almak için önce sınamanız gerekir, HasValue özelliği bir değere sahip olduğunu doğrulayın. Değer okumaya çalışırsanız, HasValue olan False, Visual Basic atar bir InvalidOperationException özel durum. Aşağıdaki örnek, değişken okumak için önerilen yol gösterir numberOfChildren önceki örnekler.


If numberOfChildren.HasValue Then
    MsgBox("There are " & CStr(numberOfChildren) & " children.")
Else
    MsgBox("It is not known how many children there are.")
End If


NULL, Boolean sonucu olabilir, değişken Boolean ifadelerinde kullanılan True, False, veya Nothing. Aşağıdaki için gerçeği tablodur And ve Or. Çünkü b1 ve b2 şimdi üç olası değerden sahip değerlendirmek için dokuz kombinasyonları vardır.

B1

B2

B1 ve b2

B1 veya b2

Nothing

Nothing

Nothing

Nothing

Nothing

True

Nothing

True

Nothing

False

False

Nothing

True

Nothing

Nothing

True

True

True

True

True

True

False

False

True

False

Nothing

False

Nothing

False

True

False

True

False

False

False

False

Boolean değişkeni veya ifadenin değeri olduğunda Nothing, ne kadar true ne de false. Aşağıdaki örneği inceleyin.


Dim b1? As Boolean
Dim b2? As Boolean
b1 = True
b2 = Nothing

' The following If statement displays "Expression is not true".
If (b1 And b2) Then
    Console.WriteLine("Expression is true")
Else
    Console.WriteLine("Expression is not true")
End If

' The following If statement displays "Expression is not false".
If Not (b1 And b2) Then
    Console.WriteLine("Expression is false")
Else
    Console.WriteLine("Expression is not false")
End If


Bu örnekte, b1 And b2 veren Nothing. Sonuç olarak, Else yan tümcesi her yürütüldüğünde If ifade ve çıktısı aşağıdaki gibidir:

Expression is not true

Expression is not false

Not Not

AndAlso ve OrElse, değerlendirme, hangi kullanım short-circuit gerekir değerlendirmek, ikinci işlenen ilk değerlendiren, Nothing.

Birini veya her ikisini aritmetik, karşılaştırma, ÜST KRKT veya türü işlem türündeki işlenenler null işleminin sonucunu da null ise. Her iki işlenen olmayan değerler varsa, Nothing, ikisi de yokmuş gibi işlenen temel değerleri üzerinde işlem gerçekleştirilir NULL yazın. Aşağıdaki örnekte, değişkenleri compare1 ve sum1 örtülü olarak yazılmalıdır. Fare işaretçisini üstlerine getirdiğinizde, derleyici nullable türleri her ikisi için yorumlar olduğunu görürsünüz.


' Variable n is a nullable type, but both m and n have proper values.
Dim m As Integer = 3
Dim n? As Integer = 2

' The comparison evaluated is 3>2, but compare1 is inferred to be of 
' type Boolean?.
Dim compare1 = m > n
' The values summed are 3 and 2, but sum1 is inferred to be of type Integer?.
Dim sum1 = m + n

' The following line displays: 3 * 2 * 5 * True
Console.WriteLine(m & " * " & n & " * " & sum1 & " * " & compare1)


Bir veya her iki işlenenleri değeri varsa, Nothing, sonucu olacaktır Nothing.


' Change the value of n to Nothing.
n = Nothing

Dim compare2 = m > n
Dim sum2 = m + n

' Because the values of n, compare2, and sum2 are all Nothing, the
' following line displays 3 * * *
Console.WriteLine(m & " * " & n & " * " & sum2 & " * " & compare2)


Bir veritabanı nullable türleri kullanmak için en önemli yerler biridir. Tüm veritabanı nesneleri null yapılabilir türler desteklemekte, ancak Tablo Tasarımcısı tarafından oluşturulan bağdaştırıcıları yapın. "Nullable türleri için TableAdapter destek" bakın TableAdapter Genel Bakışı.

Topluluk İçeriği

Ekle
Show:
© 2014 Microsoft