c#怎么拼接字符串

来源:开发教程作者:零壳头衔:程序员
导读:本期聚焦于小伙伴创作的《c#怎么拼接字符串》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《c#怎么拼接字符串》有用,将其分享出去将是对创作者最好的鼓励。

在C#编程中,字符串拼接是日常开发里高频出现的操作,不同的拼接方式在性能和适用场景上存在明显差异,开发者需要根据实际需求选择合适的方法。

c#怎么拼接字符串

C#常用字符串拼接方法

1. 使用加号+拼接

这是最直观的拼接方式,适合少量字符串的拼接场景,代码可读性高。

// 使用+拼接字符串
string str1 = "Hello";
string str2 = "World";
string result1 = str1 + " " + str2;
Console.WriteLine(result1); // 输出 Hello World

这种方式在拼接少量字符串时非常方便,但是如果在循环中使用,会产生大量的临时字符串对象,导致性能下降。

2. 使用string.Concat方法

string.Concat是C#内置的静态方法,支持拼接多个字符串参数,内部做了优化,比连续使用+拼接少量字符串效率稍高。

// 使用string.Concat拼接
string s1 = "C#";
string s2 = "字符串";
string s3 = "拼接";
string result2 = string.Concat(s1, s2, s3);
Console.WriteLine(result2); // 输出 C#字符串拼接

// 也可以拼接字符串数组
string[] strArray = { "a", "b", "c", "d" };
string result3 = string.Concat(strArray);
Console.WriteLine(result3); // 输出 abcd

3. 使用string.Format方法

这种方式适合需要按固定格式拼接字符串的场景,通过占位符来指定拼接位置,让代码逻辑更清晰。

// 使用string.Format拼接
string name = "张三";
int age = 25;
string result4 = string.Format("姓名:{0},年龄:{1}", name, age);
Console.WriteLine(result4); // 输出 姓名:张三,年龄:25

如果使用的是C# 6.0及以上版本,还可以使用字符串插值语法,它是string.Format的语法糖,写法更简洁。

// 字符串插值语法(C# 6.0+)
string name = "李四";
int score = 90;
string result5 = $"姓名:{name},分数:{score}";
Console.WriteLine(result5); // 输出 姓名:李四,分数:90

4. 使用StringBuilder类

StringBuilder位于System.Text命名空间下,它是可变字符串类型,适合大量字符串拼接的场景,尤其是循环中拼接字符串,能大幅减少内存开销。

using System.Text;

// 使用StringBuilder拼接
StringBuilder sb = new StringBuilder();
sb.Append("开始");
sb.Append("拼接");
sb.Append("字符串");
string result6 = sb.ToString();
Console.WriteLine(result6); // 输出 开始拼接字符串

// 循环中使用StringBuilder
StringBuilder loopSb = new StringBuilder();
for (int i = 0; i < 5; i++)
{
    loopSb.Append(i).Append(",");
}
// 移除最后一个多余的逗号
if (loopSb.Length > 0)
{
    loopSb.Remove(loopSb.Length - 1, 1);
}
Console.WriteLine(loopSb.ToString()); // 输出 0,1,2,3,4

5. 使用string.Join方法

string.Join适合将字符串数组或者集合按照指定的分隔符拼接成单个字符串,比如拼接列表数据时使用非常方便。

// 使用string.Join拼接
string[] fruits = { "苹果", "香蕉", "橙子" };
string result7 = string.Join("、", fruits);
Console.WriteLine(result7); // 输出 苹果、香蕉、橙子

// 拼接集合
List<string> colorList = new List<string> { "红", "黄", "蓝" };
string result8 = string.Join("-", colorList);
Console.WriteLine(result8); // 输出 红-黄-蓝

不同拼接方式的性能对比

我们可以通过简单的测试来对比不同方式在大量拼接场景下的性能差异,以下是测试代码示例:

using System;
using System.Diagnostics;
using System.Text;

class Program
{
    static void Main()
    {
        int loopCount = 10000;
        Stopwatch sw = new Stopwatch();

        // 测试+拼接
        sw.Start();
        string plusStr = "";
        for (int i = 0; i < loopCount; i++)
        {
            plusStr += i.ToString();
        }
        sw.Stop();
        Console.WriteLine($"+拼接耗时:{sw.ElapsedMilliseconds}ms");

        // 测试StringBuilder拼接
        sw.Restart();
        StringBuilder sbTest = new StringBuilder();
        for (int i = 0; i < loopCount; i++)
        {
            sbTest.Append(i);
        }
        string sbStr = sbTest.ToString();
        sw.Stop();
        Console.WriteLine($"StringBuilder拼接耗时:{sw.ElapsedMilliseconds}ms");
    }
}

运行上述代码可以发现,当拼接次数达到10000次时,+拼接的耗时远高于StringBuilder,因此大量拼接场景一定要优先选择StringBuilder。

拼接方式选择建议

  • 少量字符串(3个以内)拼接,优先使用+或者字符串插值,代码简洁可读性高
  • 需要按固定格式拼接,优先使用string.Format或者字符串插值
  • 拼接字符串数组/集合,优先使用string.Join
  • 大量字符串拼接,尤其是循环场景,必须使用StringBuilder
  • 拼接多个独立字符串,可使用string.Concat

需要注意的是,string类型是 immutable(不可变)的,每次对string进行修改都会生成新的字符串对象,而<code>StringBuilder</code>是可变类型,修改时不会生成新对象,这就是两者在大量拼接场景下性能差异的核心原因。

C#字符串拼接StringBuilderstringConcat修改时间:2026-07-22 07:33:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。