前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CA1834:对单字符字符串使用 StringBuilder.Append(char)

CA1834:对单字符字符串使用 StringBuilder.Append(char)

作者头像
用户4268038
发布2022-02-19 18:52:51
5240
发布2022-02-19 18:52:51
举报
文章被收录于专栏:stcnbstcnb

规则 ID

CA1834

类别

“性能”

修复是中断修复还是非中断修复

非中断

原因

将单位长度字符串传递给 Append 方法时,将触发此规则。

规则说明

使用单位长度字符串调用 StringBuilder.Append 时,请考虑使用 const char 而不是单位长度 const string 来提高性能。

如何解决冲突

可以手动解决冲突,在某些情况下,也使用快速操作来修复 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 时提高性能,可以禁止显示此规则的冲突。

请参阅

性能规则

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档