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

  • ecf150king

    ecf150king

    20 Ocak 2006
  • The Weavers of Eternity Paracord Tutorials

    The Weavers

    1 Ocak 2014
  • TopOfTheTech

    TopOfTheTech

    5 NİSAN 2010