2012-12-21 34 views
6

Sözlük Tuşlar böyle ben bir anahtar/değer çiftini eklenirse ("A", "değer")Harf Duyarlı Dava duyarsız bakmak-up yapmak sözlükleri mümkün yapma konusunda internet üzerinde bilgi bol buldum

sesleniyor
MyDict["a"] == MyDict["A"] 

gerçek dönecektir. Ben küçük harfe duyarlı bir bakış-up yapmak Sözlüğümü tanımlı eğer

MyDict.Add("A", "value1"); 
MyDict.Add("a", "value2"); 

ne zaman bir "anahtar zaten eklendi" hatası alıyorum neden bilmek istedikleriniz

olduğunu. Farklı kasalı anahtarlar ekleyebilmek için bir Sözlük tanımlamanın yolu yok mu?

+3

Benim için iyi çalışıyor. Boş bir sözlükte çalıştığınızdan emin misiniz? – Mir

+0

Sahip olduğunuz sorunu gösteren eksiksiz (çalıştırılabilir) bir kod örneği verebilir misiniz? –

cevap

9

Sözlükler harf duyarlı varsayılan olarak büyük - bir şey yapmanız gerekmez.

Dictionary<string, string> myDict = new Dictionary<string, string>(); 
myDict.Add("A", "value1"); 
myDict.Add("a", "value2"); 

Kodunuzu çevrimiçi çalışırken buradan görebilirsiniz: ideone. Eğer koduyla bir hata alıyorsanız bu anahtarlarından biri zaten sözlükte mevcut olduğundan

o zaman bu.

+0

Zaten var (kahve ihtiyacım var demektir), maalesef elimde bir ton değerle büyük bir sözlük oluşturmalı ve kopyaların gelme olasılığını hesaba katmamalıydım. Teşekkür ederim, daha önce hiç görmedim bunun için de teşekkür ederim. – spots

6

Tüm Dictionaries harf sensisitive bulunmaktadır. Ancak, büyük/küçük harf duyarlı olmayan dize anahtarlarıyla sözlükler oluşturmak için StringComparer sınıfı tarafından sağlanan büyük/küçük harf duyarsız dizeleri kullanabilirsiniz.

ideone onu kontrol edin.

1

StringDictionary Sınıfını kullanıyor olsaydı OP aslında doğrudur. Microsoft'un sitesi, anahtarın depolanmadan önce anahtarın küçük harfe dönüştürüldüğünü belirtir (https://msdn.microsoft.com/en-us/library/system.collections.specialized.stringdictionary(v=vs.110).aspx). Anahtar büyük/küçük harfe duyarlı hale getirmek için, Genel Sözlük, Mark Byers olarak önerilmek istendiğinde güzel çalışır. Bir durumda duyarsız anahtar istiyorsanız, StringDictionary iyi çalışır.