A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1834 below:

CA1834: Use StringBuilder.Append(char) for single character strings (code analysis) - .NET

Property Value Rule ID CA1834 Title Use StringBuilder.Append(char) for single character strings Category Performance Fix is breaking or non-breaking Non-breaking Enabled by default in .NET 9 As suggestion Cause

This rule fires when a unit length string is passed to the Append method.

Rule description

When calling StringBuilder.Append with a unit length string, consider using a const char rather than a unit length const string to improve performance.

How to fix violations

The violation can either be fixed manually, or, in some cases, using Quick Actions to fix code in Visual Studio. Examples:

Example 1

Invocations of StringBuilder.Append with a string literal of unit length:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("a");
        }
    }
}

Tip

A code fix is available for this rule in Visual Studio. To use it, position the cursor on the violation and press Ctrl+. (period). Choose Consider using 'StringBuilder.Append(char)' when applicable. from the list of options that is presented.

Fix applied by Visual Studio:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append('a');
        }
    }
}

In some cases, for example when using a unit length const string class field, a code-fix is not suggested by Visual Studio (but the analyzer still fires). These instances require a manual fix.

Example 2

Invocations of StringBuilder.Append with a const string class field of unit length:

using System;
using System.Text;

namespace TestNamespace
{
    public class Program
    {
        public const string unitString = "a";

        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(unitString);
        }
    }
}

After careful analysis, unitString here can be changed to a char without causing any build errors.

using System;
using System.Text;

namespace TestNamespace
{
    public class Program
    {
        public const char unitString = 'a';

        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(unitString);
        }
    }
}
When to suppress warnings

It's safe to suppress a violation of this rule if you're not concerned about improving performance when using StringBuilder.

Suppress a warning

If you just want to suppress a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.

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

To disable the rule for a file, folder, or project, set its severity to none in the configuration file.

[*.{cs,vb}]
dotnet_diagnostic.CA1834.severity = none

For more information, see How to suppress code analysis warnings.

See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4