Dava genel sözlük için duyarsız erişim
Yönetilen DLL kullanan bir uygulama var. Bu DLL dosyaları genel bir sözlük döndürür:
Dictionary<string, int> MyDictionary;
Sözlük büyük harf ve küçük harf ile anahtarları içerir.
Başka bir tarafta veremem durumda garanti ancak olası anahtarları (dizi) bir listesini alıyorum. Sözlük tuşlarını kullanarak değerini almak için çalışıyorum. Ama tabii ki şu durumda bir uyumsuzluk var beri başarısız olur:
bool Success = MyDictionary.TryGetValue( MyIndex, out TheValue );
Bu TryGetValue bir olacağını umuyordumdurum göz ardıbayrak MSDN doc belirtildiği gibi ama bu genel bir sözlük için geçerli değil gibi görünüyor.
Bir sözlük anahtar davayı görmezden gelmeye değer mi? Doğru olan bu sözlük yeni bir kopyasını oluşturarak daha iyi bir çözüm vardırStringComparer.OrdinalİgnoreCaseparametre?
CEVAP
Bir değer almak için deneyin noktada StringComparer
bir belirtmek için bir yolu yok. Eğer düşünürsen, "Foo".GetHashCode()
"foo".GetHashCode()
büyük küçük harf duyarlı-hassas karma bir harita almak uygulamak olabilir makul bir yolu yok bu yüzden çok farklı.
Ancak, en başta kullanarak büyük küçük harf duyarsız bir sözlük oluşturabilirsiniz:-
MyDictionary = new Dictionary<string, int>(
StringComparer.OrdinalIgnoreCase);
(Bu sözlük o zaman comparer.GetHashCode("Foo")
comparer.GetHashcode("foo")
aynı değeri vermek gibi StringComparer.OrdinalIgnoreCase
) GetHashCode()
uygulama kullanır
Ne sıklıkla bağımlılıktan sözlük açmak zorunda mısın? Eğer sadece bir kez, kolayca eski içeriği ile büyük küçük harf duyarlı yeni bir sözlük oluşturmak olabilir
MyDictionary = new Dictionary<string, int>(
MyDictionary, StringComparer.OrdinalIgnoreCase);
dava joker deyimi GİBİ sql için duyars...
Erişim için döngüler Python Endeksi...
Python bir sözlük için anahtar Ekle?...
C bir Sözlük üzerinde yineleme için en...
Nasıl dava Vim / küçük harf duyarlı ar...