You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.7.2中如何用原生StringBuilder实现带分隔符追加?

仅用原生StringBuilder实现逗号分隔的错误消息追加(.NET Framework 4.7.2)

原生StringBuilder确实没有内置的“默认分隔符”设置,但完全可以通过它自带的Length属性和Append方法实现需求,不需要额外集合、String.Join或自定义类,核心逻辑就是追加新消息前先判断是否已有内容,有则先加分隔符:

// 初始化可跨方法传递的StringBuilder实例
var errorTracker = new StringBuilder();

// 场景1:在方法A中追加第一条错误
if (errorTracker.Length > 0)
    errorTracker.Append(", ");
errorTracker.Append("Duplicated ID");

// 场景2:在方法B中追加第二条错误
if (errorTracker.Length > 0)
    errorTracker.Append(", ");
errorTracker.Append("Invalid cost");

// 场景3:在方法C中追加第三条错误
if (errorTracker.Length > 0)
    errorTracker.Append(", ");
errorTracker.Append("Unsupported Service for account");

// 最终输出无多余末尾逗号的结果
string finalErrors = errorTracker.ToString();
// 输出:Duplicated ID, Invalid cost, Unsupported Service for account

这种方式逻辑直白:只有当StringBuilder中已有内容时,才在新消息前追加分隔符,从根源上避免了末尾出现多余逗号的问题,完全依赖StringBuilder的原生方法实现,符合你跨方法传递实例、按需追加消息的场景。

如果觉得每次写判断有点繁琐,也可以基于原生StringBuilder写个轻量的扩展方法(本质还是用原生API,不算自定义类):

public static class StringBuilderExtensions
{
    public static StringBuilder AppendWithSeparator(this StringBuilder sb, string message, string separator = ", ")
    {
        if (sb.Length > 0)
            sb.Append(separator);
        sb.Append(message);
        return sb;
    }
}

使用时就简化成:

errorTracker.AppendWithSeparator("Duplicated ID");
errorTracker.AppendWithSeparator("Invalid cost");

这个扩展方法完全基于原生StringBuilder实现,没有引入额外依赖,也能满足你的需求。

内容的提问来源于stack exchange,提问作者SyndRain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:46:18