Share via


CA1834: 단일 문자열에 StringBuilder.Append(char) 사용

속성
규칙 ID CA1834
타이틀 단일 문자열에 대해 StringBuilder.Append(char)를 사용하세요.
범주 성능
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 제안 사항

원인

이 규칙은 단위 길이 문자열이 Append 메서드에 전달될 때 발생합니다.

규칙 설명

단위 길이 문자열을 사용하여 StringBuilder.Append를 호출할 때 성능을 향상하려면 단위 길이 const string 대신 const char를 사용하는 것이 좋습니다.

위반 문제를 해결하는 방법

위반은 수동으로 해결하거나, 경우에 따라 바로 가기를 사용하여 Visual Studio에서 코드를 수정할 수 있습니다. 예:

예 1

단위 길이의 문자열 리터럴을 사용하여 StringBuilder.Append 호출:

using System;
using System.Text;

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

Visual Studio에서는 이 규칙에 대한 코드 수정 사항을 사용할 수 있습니다. 이를 사용하려면 위반에 커서를 놓고 Ctrl+ 키를 누릅니다.(마침표). 해당하는 경우 'StringBuilder.Append(char)'를 사용하는 것이 좋습니다. 표시되는 옵션 목록에서 선택합니다.

Code fix for CA1834 - Use StringBuilder.Append(char) for single character strings

Visual Studio에서 적용되는 수정 사항:

using System;
using System.Text;

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

단위 길이 const string 클래스 필드를 사용하는 경우처럼 경우에 따라 코드 수정 사항이 Visual Studio에서 제안되지 않지만 분석기는 여전히 발생합니다. 이러한 인스턴스는 수동으로 수정해야 합니다.

예제 2

단위 길이의 const string 클래스 필드를 사용하여 StringBuilder.Append 호출:

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);
        }
    }
}

신중하게 분석한 후 빌드 오류를 발생시키지 않고 unitStringchar로 변경할 수 있습니다.

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);
        }
    }
}

경고를 표시하지 않는 경우

StringBuilder를 사용할 때 성능 향상이 중요하지 않은 경우 이 규칙의 위반을 표시하지 않아도 됩니다.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

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

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

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

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

참고 항목