zoukankan      html  css  js  c++  java
  • C# .Net String字符串效率提高-字符串拼接

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

    1. 减少装箱

    值类型与引用类型之间的转换存在装箱与拆箱操作;将值类型转换成引用类型的操作叫装箱,将引用类型转换成值类型叫拆箱。
    整数类型在与字符串进行拼接操作时,并不默认调用ToString()方法,存在装箱操作。所以:
        var str1 = "a"+1;//存在装箱,效率低
        var str2 = "a" + 1.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");
  • 相关阅读:
    什么是webview
    juqery.fn.extend和jquery.extend
    LeetCode
    5. Longest Palindromic Substring
    42. Trapping Rain Water
    11. Container With Most Water
    621. Task Scheduler
    49. Group Anagrams
    739. Daily Temperatures
    3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/fancyblogs/p/6971903.html
Copyright © 2011-2022 走看看