CA1834: 단일 문자열에 StringBuilder.Append(char) 사용
속성 | 값 |
---|---|
규칙 ID | CA1834 |
제목 | 단일 문자열에 대해 StringBuilder.Append(char)를 사용하세요. |
범주 | 성능 |
수정 사항이 주요 변경인지 여부 | 주요 변경 아님 |
.NET 9에서 기본적으로 사용 | 제안 사항 |
원인
이 규칙은 단위 길이 문자열이 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)'를 사용하는 것이 좋습니다. 표시되는 옵션 목록에서 선택합니다.
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);
}
}
}
신중하게 분석한 후 빌드 오류를 발생시키지 않고 unitString
을 char
로 변경할 수 있습니다.
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
자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.
참고 항목
.NET