SORU
5 Kasım 2012, PAZARTESİ


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
5 Kasım 2012, PAZARTESİ


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);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • amc

    amc

    21 EYLÜL 2005
  • Murray Winiata

    Murray Winia

    2 ŞUBAT 2009
  • TokShogun

    TokShogun

    6 HAZİRAN 2009