C#字符串拼接你用的是哪种方式?


今天(2021-11-02)在查看代码复盘的时候,看到字符串拼接这一块,突然福如心至,回忆起用过的几种字符串拼接方式。

然后百度简单梳理一下,看一看你用过哪种,如有其他方式,可以在评论区聊聊用用。

1、“+”或者“+=”的方式

string str = "我是一" + "句话";
//或者
string str = "我是一";
str += "句话";

首先需要明白的是string类型,string是引用类型,保留在堆上,而不是栈上,用的时候传的是内存中的地址,

每次修改就会重新创建一个新的string对象来存储字符串,原有的会被自动回收,如果有时候需要循环拼接时,就会不断创建新的对象,这样很浪费性能和内存。

2、string.Format()的方式

string str = string.Format("{0}{1}{2}", "我是", "一句", "话");

这种方式是先创建一个StringBuilder类型的变量,长度为第一个参数的长度+参数长度的8倍,系统自动分配一个比较大的容量来存储。

3、StringBuilder的方式

//注意需要引入 using System.Text;
StringBuilder str = new StringBuilder();
str.Append("我是");
str.Append("一句");
str.Append("话");

StringBuilder 是预先创建一个比较大的内存,以后每次操作时判断容量上限是否不够用,如果不够用就自动把容量扩大一倍,

修改的还是第一次创建的对象的值。

4、$ 的方式

string endStr = "一句话";
string str = $"我是{endStr}";

C#中$的用法是为了替代string.format(),原先赋值需要占位符和变量,当需要拼接多个变量会造成语句过长等不易理解问题,

$是为了替代string.format()可以把字符串中的C#变量{}包含起来达到识别C#变量的目的。

5、@ 的方式

//1、换行后,双引号内的字符都是字符串
string str = @"我是
                     一句
                      话";
//2、读取文件路径不需要转义字符
StreamReader sr = new StreamReader(@"C:\Users\\Public\Desktop\test.txt");

换行后,双引号内的字符都是字符串;读取文件路径不需要转义字符。


一般我都是混合使用的,比如拼接一段SQL语句,如下:
 var table = "Demo.";
            var name = "姓名";
            string str = string.Format(@"SELECT a.[number]
                                  ,a.[name]
                                  ,a.[classN]
                                  ,a.[classR]
                                  ,a.[classNa]
                                  ,a.[score],
                                  b.name 
                            FROM {0}dbo.UserName a
                            INNER JOIN Demo.dbo.StudentTable b ON a.classN=b.ClassName", table);
            str += $" WHERE a.name='{name}' ";

你们是怎么用的呢?

欢迎关注订阅微信公众号【熊泽有话说】,更多好玩易学知识等你来取
作者:熊泽-学习中的苦与乐
公众号:熊泽有话说
出处:https://blog.csdn.net/qq_35267585/article/details/121100210
您可以随意转载、摘录,但请在文章内注明作者和原文链接。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值