SORU
9 Aralık 2010, PERŞEMBE


Neden >= yanlış zaman == null değerler için true değerini döndürür?dönüş

İnt türünde iki değişken var? (veya Null<eğer istersen int>). Yapmak istediğim bir büyük-daha-veya-eşittir (>=) görünüşe göre iki değişken karşılaştırma ama, bu eğer her iki değişken == operatörü true değerini döndürür, belli ki boş iken ise false değerini döndürür.

Biri bu ^ semantik tanımını mantıklı. çünkü neden bana açıklayabilir . = operatör içeren kelime "ya da"?

CEVAP
9 Aralık 2010, PERŞEMBE


Bu özellik ilk C# 2.0 geri tasarlarken bu gariplik hakkında büyük bir tartışma vardı. Sorun C# kullanıcıları tamamen bu anlamlı olması için kullanılır:

if(someReference == null)

NULL değer türleri için eşitlik uzanan, aşağıdaki seçenekleriniz vardır.

1) Null eşitlik gerçektenkaldırdı. Eğer ya da işlenen her ikisi de null ise o zaman sonuç ne doğru, ne yanlış, ama boş. Bu durumda aşağıdakileri yapabilirsiniz:

1a) yasa dışı "" "deyimi bir bool ihtiyacı var, bir null bool değil. eğer" deyimi, çünkü eğer bir NULL değer türü bir eşitlik var Bunun yerine, herkesin kullanabileceği iste "HasValue eğer karşılaştırmak istiyorsanız" null. Bu ayrıntılı ve sinir bozucu.

1b) Otomatik olarak false null dönüştürmek. "X==" x döner kafa karıştırıcı ve referans türlerinde null karşılaştırmalar anlayışlarına karşı çalışan boş. eğer yanlış boş bu dezavantajı

2) Null eşitlik kaldırdı. Null eşitlik doğru veya yanlış, boş karşılaştırıldığında boş bir çek. Bu null null eşitlik eşitsizlik ile tutarsız yapar.

Bu seçeneklerin hiçbiri, belli ki doğru; onlar tüm artıları ve eksileri var. VBScript örneğin 1b, seçer. Uzun tartışmalar sonrasında C# tasarım ekibi #2 seçti.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GoProTutorials

    GoProTutoria

    18 NİSAN 2011
  • H3Ctic (old channel)

    H3Ctic (old

    23 Mart 2011
  • Sam Kear

    Sam Kear

    14 Temmuz 2007