Friday, February 21, 2014

C# Recommendations for StringComparison



Recommendations for String Usage

When you develop with the .NET Framework, follow these simple recommendations when you use strings:

·         Use overloads that explicitly specify the string comparison rules for string operations. Typically, this involves calling a method overload that has a parameter of type StringComparison.

·         Use StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase for comparisons as your safe default for culture-agnostic string matching.

·         Use comparisons with StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase for better performance.

·         Use string operations that are based on StringComparison.CurrentCulture when you display output to the user.

·         Use the non-linguistic StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase values instead of string operations based on CultureInfo.InvariantCulture when the comparison is linguistically irrelevant (symbolic, for example).

·         Use the String.ToUpperInvariant method instead of the String.ToLowerInvariant method when you normalize strings for comparison.

·         Use an overload of the String.Equals method to test whether two strings are equal.

·         Use the String.Compare and String.CompareTo methods to sort strings, not to check for equality.

·         Use culture-sensitive formatting to display non-string data, such as numbers and dates, in a user interface. Use formatting with the invariant culture to persist non-string data in string form.

Avoid the following practices when you use strings:

·         Do not use overloads that do not explicitly or implicitly specify the string comparison rules for string operations.

·         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.

·         Do not use an overload of the String.Compare or CompareTo method and test for a return value of zero to determine whether two strings are equal.

·         Do not use culture-sensitive formatting to persist numeric data or date and time data in string form.

The rest of the article contains:

  • Specifying String Comparisons Explicitly
  • The Details of String Comparison
  • Choosing a StringComparison Member for Your Method Call
  • Common String Comparison Methods in the .NET Framework
  • Methods that Perform String Comparison Indirectly
  • Displaying and Persisting Formatted Data


No comments:

Post a Comment

Note: Only a member of this blog may post a comment.