SORU
20 Mart 2013, ÇARŞAMBA


Neden VB.NET ve C değeri karşı boş kontrol farkı var#mı?

VB.NET Bu durumda:

Dim x As System.Nullable(Of Decimal) = Nothing
Dim y As System.Nullable(Of Decimal) = Nothing

y = 5
If x <> y Then
    Console.WriteLine("true")
Else
    Console.WriteLine("false") '' <-- I got this. Why?
End If

Ama C# bu olur:

decimal? x = default(decimal?);
decimal? y = default(decimal?);

y = 5;
if (x != y)
{
    Debug.WriteLine("true"); // <-- I got this -- I'm with you, C# :)
}
else
{
    Debug.WriteLine("false");
}

Neden bir fark var mı?

CEVAP
20 Mart 2013, ÇARŞAMBA


VB.NET ve C#.NET farklı dilleri, kullanımı ile ilgili farklı varsayımlar yapan farklı ekipler tarafından inşa edilmiş; bu durumda BOŞ bir karşılaştırma anlamı vardır.

Benim kişisel tercihi özünde BOŞ anlam verir VB.NET semantik, "henüz bilmiyorum". Sonra 5 karşılaştırılması "henüz bilmiyorum". doğal olarak "henüz bilmiyorum"; BOŞ yani. Bu (çoğu, hepsi değilse) SQL veritabanında NULL davranışları yansıtma ek bir avantaja sahiptir. Bu da daha fazla standart C den (#'In) üç değerli here açıklandığı gibi mantık, yorumlama.

C# takım NULL ne anlama geldiği konusunda farklı varsayımlar, davranış farkı sonuçlanan yaptı. Eric Lippert wrote a blog about the meaning of NULL in C#. Eric Lippert başına: "ben de VB / null semantiği ve here here JScript yazdı hakkında VBScript".

Hangi NULL değerleri mümkün olan her ortamda Dışlanan Orta (A veya ~Bir ıe tautologically true) Yasası artık dayanıyordu olabilir tanımak önemlidir.

Güncelleme:

bool bool? (farklı olarak) sadece DOĞRU ve YANLIŞ değerlerini alabilir. Ancak NULL dili bir uygulama BOŞ ifadeler ile yayar nasıl karar vermelidir. İfadeler VB 5=null 5<>null yanlış dönüş. C#, benzer ifadeleri 5==null 5!=null sadeceikinciilk[2014-03-02 - PG updated]false değerini döndürür. Ancak, boş destekleyen HERHANGİ bir ortamda, programcı üzerine düşen doğruluk tabloları ve boş yayma dil tarafından kullanılır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmazonWireless

    AmazonWirele

    8 EYLÜL 2010
  • Eric Magidson

    Eric Magidso

    4 Ocak 2009
  • oHeymarvin

    oHeymarvin

    11 Temmuz 2013