Code inspection: Specify string comparison explicitly
Similarly to the Specify a culture in string conversion explicitly, this inspection helps to avoid problems with running your code on machines with different culture settings.
When string results returned by String.ToUpper()
/String.ToLower()
are compared using equality operators (==
/!=
), comparison results may differ depending on the machine's locale. The canonical example is the Turkish where there is a lowercase dotless "ı" with the corresponding uppercase "I", and a lowercase "i" with an uppercase "İ" with the dot.
So in a case of using String.ToUpper()
/String.ToLower()
for a case-insensitive comparison:
ReSharper suggests replacing it with an overload of String.Equals()
:
where it is immediately clear that the strings are compared taking the culture settings into consideration.
If the comparison is explicitly made culture-insensitive, then it is also suggested to use String.Equals()
with the InvariantCultureIgnoreCase
in the comparison rule parameter, for example:
could be replaced with