2017-08-30 5 views
3

が存在すると思いました。 誰かがそれを説明するのに役立つでしょうか?はfalseを返しDictionary.ContainsKeyでもキーは、私は以下のようにコードの部分を持っている

+10

キーあなたに私は違いを知っているあなたに期待される結果が得られるとIldasmにより、基礎となるILを比較し、あなたのDictionaryに別の項目を追加しました挿入にはダッシュの種類が1つありますが、別の種類を実行していることを確認してください。 –

+1

@ Yuriyaktorovichが正しいです。このページで '-'を見つけてください! –

+0

正解、ありがとう:) –

答えて

1

すでに指摘されているようにあなたのダッシュは同じではありません

{ "en‐US", "English"}, 
{ "en-US", "English2"}, 

そして:

IL_002d: nop 
IL_002e: dup 
IL_002f: ldstr  bytearray (65 00 6E 00 10 20 55 00 53 00)     // e.n.. U.S. 
IL_0034: ldstr  "English" 
IL_0039: callvirt instance void class [mscorlib]System.Collections.Generic.Dictionary`2<string,string>::Add(!0, 
                               !1) 
IL_003e: nop 
IL_003f: dup 
IL_0040: ldstr  "en-US" 
IL_0045: ldstr  "English2" 
IL_004a: callvirt instance void class [mscorlib]System.Collections.Generic.Dictionary`2<string,string>::Add(!0, 
                               !1) 

enter image description here

5

あなたのダッシュは同じではありません。 (あなたはこのような文字に関連するものをデバッグする必要がある場合に便利)あなたのテキストがNotepad++にどのように見えるかを見てみましょう:

実際-the code works as expectedであなたのダッシュを交換した後。

enter image description here

EDIT

おかげで、ため@Scottチェンバレン。 net fiddle that highlights the character differences

+1

2つのバージョンを比較する[.NET Fiddle](https://dotnetfiddle.net/SwZYCn)があります(自分の答えで使用する予定でしたが、あなたのものは十分です) –

+0

ありがとう、@ScottChamberlain、そのフィドルは非常に便利です。私は答えに加えました。 –

関連する問題