2012-09-26 2 views
1

함수에서받는 사전에 대/소문자를 구분하지 않는 비교자가 있는지 확인해야합니다.C#에서 사전 비교 자의 유형을 어떻게 결정합니까?

즉. 소문자를 구분 사전과 같이 선언 : 내 함수에 사전을받을 때

var myDict = new Dictionary<string, decimal>(StringComparer.OrdinalIgnoreCase); 

내가 .Comparer 속성에 액세스 유형을 확인하실 수 있습니다 -하지만 내가 얻을 수가 모두입니다 -

System.Collections.Generic.EqualityComparer<string> 

사용되는 Compareer가 StringComparer.OrdinalIgnoreCase인지 어떻게 알 수 있습니까?

+2

시나리오를 재현 할 수 없습니다. 그 비교자를 전달하고'.Comparer'가'System.OrdinalComparer'를 얻는 지 확인합니다. 'new Dictionary ()'과 같은 기본 생성자를 사용하고 있지 않습니까? –

+0

흠 - 코드를 밟았으며 기본 생성자를 사용하지 않고 있다고 확신합니다. 다른 하나는 함수의 동작이 대/소문자 구분과 관련하여 변경된다는 것입니다. 따라서 StringComparer.OrdinalIgnoreCase가 생성자에이를 추가 할 때 효과가 있습니다. – dan

+0

죄송합니다 - 당신 말이 맞아요. 나는 일부 테스트 코드와 실제 내용이 섞여있다. 아래 답변은 트릭을 수행합니다. – dan

답변

3

StringComparer.OrdinalIgnoreCase에 대해 형식이 아닌 값을 확인해야합니다.

myDict.Comparer == StringComparer.OrdinalIgnoreCase 
관련 문제