字符串操作是编程中非常频繁的操作,特别是在拼接字符串的时候。下面来说说字符串拼接的效率提升。

1. 减少装箱

值类型与引用类型之间的转换存在装箱与拆箱操作;将值类型转换成引用类型的操作叫装箱,将引用类型转换成值类型叫拆箱。
整数类型在与字符串进行拼接操作时,并不默认调用ToString()方法,存在装箱操作。所以:
    var str1 = "a"+;//存在装箱,效率低
var str2 = "a" + .ToString();//效率更高

2. 避免分配额外的内存空间

string对象(字符串对象)是个很特殊的对象,它一旦被赋值就不可改变。在运行时调用System.String类中的任何方法或进行任何运算(如“=”赋值、“+”拼接等),都会在内存中创建一个新的字符串对象,这也意味着要为该新对象分配新的内存空间。

var str1 = "a";
str1 += "b";//又创建了2个字符串对象,并且执行了一次string.Contact方法 var str2 = "a" + "b";//字符串不会在运行时进行拼接,而是会在编译时直接生成一个字符串,等效于 str="ab";效率更高

3. 使用String.Format()代替“+”

String.Format是将指定的 String 类型的数据中的每个格式项替换为相应对象的值的文本等效项。同样,我也可以用来拼接字符串,并且效率高于“+”。

string s1 = "a";
string s2 = "b";
var str1 = s1 + s2;
var str2 = String.Format("字符1 {0}, 字母2 {1}", s1, s2);//效率高

4. 大量字符串拼接使用StringBuilder

StringBuilder是可变长度的,其首先在内存中分配固定的长度,当进行频繁的插入和连接操作时,超出了内存中分配的长度会自动进行扩充,从而有效的节约了内存空间和减少了生成对象的时间。

var str1 = "a";
str1 += "b";
str1 += "c";
str1 += "d";
//效率更高,尤其是在处理大量字符串的时候或者是在循环里面
var str2 = new System.Text.StringBuilder("a");
str2.Append("b");
str2.Append("c");
str2.Append("d");

C# .Net String字符串效率提高-字符串拼接的更多相关文章

  1. java 创建string对象机制 字符串缓冲池 字符串拼接机制

    对于创建String对象的机制,在这一过程中涉及的东西还是值得探究一番的. 首先看通过new String对象和直接赋值的方式有什么区别,看如下代码: public static void main( ...

  2. java 创建string对象机制 字符串缓冲池 字符串拼接机制 字符串中intern()方法

    字符串常量池:字符串常量池在方法区中 为了优化空间,为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池.如果字符串已经存在池中,就 ...

  3. js扩展String.prototype.format字符串拼接的功能

    1.题外话,有关概念理解:String.prototype 属性表示 String原型对象.所有 String 的实例都继承自 String.prototype. 任何String.prototype ...

  4. dotnet 6 使用 string.Create 提升字符串创建和拼接性能

    本文告诉大家,在 dotnet 6 或更高版本的 dotnet 里,如何使用 string.Create 提升字符串创建和拼接的性能,减少拼接字符串时,需要额外申请的内存,从而减少内存回收压力 本文也 ...

  5. Python字符串与数字拼接

    Python不像JS或者PHP这种弱类型语言里在字符串连接时会自动转换类型,而是直接报错.要解决这个方法只有提前把int转成string,然后再拼接字符串即可. 如代码: 1 2 3 4 5 # co ...

  6. Leetcode#344. Reverse String(反转字符串)

    题目描述 编写一个函数,其作用是将输入的字符串反转过来. 示例 1: 输入: "hello" 输出: "olleh" 示例 2: 输入: "A man ...

  7. jquery获取当前按钮、截取字符串、字符串拼接、动态循环添加元素

    截取字符串:字符串拼接:动态循环添加元素:获取当前按钮: {data : null, render: function(data, type, row ) { var loginName = $(&q ...

  8. C#指定长度截取字符串 并进行拼接。

    需求:有一个字符串需要按照指定长度拆分出来,然后在增加一个字符串拼接上. /// <summary> /// 字符串截取并拼接 /// </summary> /// <p ...

  9. 对字符串进行频繁拼接的话,使用StringBuffer或者StringBuilder

    package zhengze; /*如果需要对字符串进行频繁拼接的话,使用StringBuffer或者StringBuilder StringBuffer:[字符串缓冲器]是线程安全的,效率低 St ...

随机推荐

  1. 使用 Python 爬取网页数据

    1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 ...

  2. Elastic Search 语法总结

    1. 插入 PUT /megacorp/employee/1 { "first_name" : "John", "last_name" : ...

  3. Codeforces437 B. The Child and Set

    题目类型:位运算 传送门:>Here< 题意:给出\(sum和limit\),求一个集合\(S\),其中的元素互不相同且不超过\(limit\),他们的\(lowbit\)之和等于\(su ...

  4. 倍增\ tarjan求lca

    对于每个节点v,记录anc[v][k],表示从它向上走2k步后到达的节点(如果越过了根节点,那么anc[v][k]就是根节点). dfs函数对树进行的dfs,先求出anc[v][0],再利用anc[v ...

  5. apt-get软件包管理命令 和 apt-key命令

    apt-get命令是Debian Linux发行版中的APT软件包管理工具. 所有基于Debian的发行都使用这个包管理系统.deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件 ...

  6. css 溢出overflow

    css 溢出overflow 当一个元素被设置为固定大小,在这个元素中的内容如果超出元素的界限,就会出现溢出的现象. 通常情况下我们可以通过overflow来控制这个属性. overflow语法定义 ...

  7. mysql慢查询日志按天切割归纳

    问题描述: mysql开启慢查询功能,再正常不过,那么存在这样一种情况:慢查询写入的文件位置和文件名是指定好的,如果慢查询时间设定严苛,不出意外,记录慢查询的单个文件大小会日益增大,几十兆或者上百兆, ...

  8. Ubuntu16.04 安装g++6

    https://blog.csdn.net/qq_34877350/article/details/81182022 1.安装gcc-6: sudo apt-get update && ...

  9. 查看open office运行状态

    打开SSH工具: 1.ps -ef|grep soffice 2.cd /opt/jboss-eap-7.0 3.cd logs 4.tail -f subscription.log 然后就可以操作( ...

  10. 1.2浅谈Spring-Spring结构

    时隔很多天的我又回来....最近发展了一下自己的爱好,所以拖了很长时间. 前面我们从概念性上分析了spring的特性 这里我们附上Spring框架的结构图 我们简单的来说一些这个框架图 我们从下往上看 ...