All rules
CA1820Performance Enabled by default: No

Test for empty strings using string length

Test for empty strings using string length

Microsoft docs

Description

Comparing strings using the System.String.Length property or the System.String.IsNullOrEmpty method is faster than using System.Object.Equals. This is because System.Object.Equals executes significantly more CIL instructions than either System.String.IsNullOrEmpty or the number of instructions executed to retrieve the System.String.Length property value and compare it to zero.

For null strings, System.Object.Equals and <string>.Length == 0 behave differently. If you try to get the value of the System.String.Length property on a null string, the common language runtime throws a System.NullReferenceException. If you perform a comparison between a null string and the empty string, the common language runtime does not throw an exception and returns false. Testing for null does not significantly affect the relative performance of these two approaches. When targeting .NET Framework 2.0 or later, use the System.String.IsNullOrEmpty method. Otherwise, use the System.String.Length == 0 comparison whenever possible.

Cause

A string is compared to the empty string by using System.Object.Equals.

How to fix violations

To fix a violation of this rule, change the comparison to use the System.String.IsNullOrEmpty method.

Example

#pragma warning disable CA1820
// The code that's violating the rule is on this line.
#pragma warning restore CA1820

When to suppress

It's safe to suppress a warning from this rule if performance is not an issue.

Group results
0 yes 0 no
ConsensusNone (disabled)
Severity preference (yes voters)
Suggestion0
Warning0
Error0