SORU
1 ŞUBAT 2010, PAZARTESİ


Neden't Sözlük<bool? bir, için bir anahtar olarak null kullanabilirsiniz dize>?

Görünüşe göre, eğer anahtar null türü ise bile olamaz anahtarı null kullanın.

Bu kod:

var nullableBoolLabels = new System.Collections.Generic.Dictionary<bool?, string>
{
    { true, "Yes" },
    { false, "No" },
    { null, "(n/a)" }
};

...bu özel durum oluşur:

Değer null olamaz. Parametre adı: anahtar

Açıklama: işlenmeyen Bir özel durum geçerli web isteği yürütülürken oluştu. Bu hata hakkında daha fazla bilgi için yığın izlemesini gözden geçirin ve kod içinde kaynaklandığı yer.

[ArgumentNullException: Value cannot be null. Parameter name: key] System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument) 44 System.Collections.Generic.Dictionary'2.Insert(TKey key, TValue value, Boolean add) 40
System.Collections.Generic.Dictionary'2.Add(TKey key, TValue value) 13

Neden olur .NET çerçeve bir anahtar için null türüne izin ver, ama boş değere izin değil mi?

CEVAP
1 ŞUBAT 2010, PAZARTESİ


Olur söyle aynı şey varsa Dictionary<SomeType, string>, SomeType olmak başvuru türü ve denedin pas null olarak anahtar, öyle değil mi bir şey etkileyen sadece null türü gibi bool?. Anahtar olarak herhangi bir tür kullanmak, null veya değil.

Gerçekten nulls kıyaslayamazsın gerçeğini aşağı gelir. Sanırım mantık arkasında olamamak koymak null anahtar, bir özelliği olması tasarlanan göre diğer nesneler olduğunu gösteriyor, tutarsız karşılaştırmak null referanslar.

Eğer gözlük bir neden istiyorsanız, "anahtar Bir null başvuru" on MSDN. aşağı bir kaynar

Eğer olası bir çözüm bir örnek isterseniz, bir şey Need an IDictionary implementation that will allow a null key benzer deneyebilirsiniz

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8bitdigitaltv

    8bitdigitalt

    31 AĞUSTOS 2011
  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • GWTLecturer

    GWTLecturer

    18 EKİM 2012