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

  • Bratayley

    Bratayley

    30 Aralık 2010
  • Joseph Herscher

    Joseph Hersc

    14 Mart 2007
  • Karan Thakur

    Karan Thakur

    23 HAZİRAN 2010