standards-c-sharp

For string operations, always explicitly specify comparison/culture rules

For minimum ambiguity and maximum readability, always use overloads that explicitly specify StringComparison and/or CultureInfo parameters.

StringComparison.Ordinal

Use StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase for non-linguistic (“computery”) type strings, such as protocols or error codes.

Don’t

var protocol = GetProtocol(uri);
var isHttp = protocol.Equals("http"); 

Do

var protocol = GetProtocol(uri);
var isHttp = protocol.Equals("http", StringComparison.OrdinalIgnoreCase); 

StringComparison.CurrentCulture

Use StringComparison.CurrentCulture, StringComparison.CurrentCultureIgnoreCase, or supply a specific CultureInfo when the string contains natural language. In the following example, the expected sort order of the two strings may change between cultures.

Don’t

var result = string.Compare("able", "ångström");

Do

var result = string.Compare("able", "ångström", StringComparison.CurrentCulture);
// or
var result = string.Compare("able", "ångström", new CultureInfo("sv-SE"), CompareOptions.None);

StringComparison.InvariantCulture

Do not use string operations based on StringComparison.InvariantCulture in most cases. One of the few exceptions is when you are persisting linguistically meaningful but culturally agnostic data. - Best practices for using strings in .NET