IT Share you

ToLowerInvariant ()의 문제점은 무엇입니까?

shareyou 2020. 12. 15. 20:25
반응형

ToLowerInvariant ()의 문제점은 무엇입니까?


다음 코드 줄이 있습니다.

var connectionString = configItems.
                Find(item => item.Name.ToLowerInvariant() == "connectionstring");

VS 2010 코드 분석은 다음과 같이 말합니다.

경고 7 CA1308 : Microsoft.Globalization : In 메서드 ... 'string.ToLowerInvariant ()'에 대한 호출을 String.ToUpperInvariant ()로 바꿉니다.

이것이 ToUpperInvariant()더 신뢰할 수 있음을 의미합니까 ?


Google은 CA1308을 가리키는 힌트를 제공합니다 . 문자열을 대문자로 정규화

그것은 말한다 :

문자열은 대문자로 정규화되어야합니다. 작은 문자 그룹은 소문자로 변환 될 때 왕복 할 수 없습니다. 왕복을 만든다는 것은 문자를 한 로케일에서 문자 데이터를 다르게 나타내는 다른 로케일로 변환 한 다음 변환 된 문자에서 원래 문자를 정확하게 검색하는 것을 의미합니다.

그렇습니다. ToUpper는 ToLower보다 더 신뢰할 수 있습니다.

앞으로 나는 인터넷 검색을 먼저 제안합니다-나는 던져진 모든 FxCop 경고에 대해 그렇게합니다.) 해당 문서를 읽는 데 많은 도움이됩니다.)


TomTom이 말하는 것 외에도 .net은 대문자로 된 문자열 비교에 최적화되어 있습니다. 따라서 상한 불변을 사용하는 것이 이론적으로 하한 불변보다 빠릅니다.

이것은 주석에서 지적한 것처럼 실제로 C #을 통해 CLR에 명시되어 있습니다. 다음 링크는 책의 해당 부분을 인용합니다. 이 주제에 대해 MSDN에서 찾을 수있는 내용이 없기 때문에 이것이 사실인지 확실하지 않습니다. msdn의 문자열 비교 가이드에서는 toupperinvariant와 tolowerinvariant가 동일하며 전자를 선호하지 않는다고 언급합니다.

C #의 문자열 비교

참조 URL : https://stackoverflow.com/questions/2801508/what-is-wrong-with-tolowerinvariant

반응형