zoukankan      html  css  js  c++  java
  • String与StringBuilder 字符串的轻重量级

    有人经常问String和StringBuilder有什么区别,啥时候用什么呢?

    其实,如果是简单的字符串应用的话,一般都用string。
     
    下面我们来举个例子:
    string strEmail = "";

    strEmail 
    += "<tr><td>" + xxxxx + "</td>";
    strEmail 
    += "<td>" + yyyyy + "</td>";
    strEmail 
    += "<td>" + xxxxx+ "</td>";
    strEmail 
    += "<td>" + yyyyy + "</td></tr>";

    以上属于比较丑陋的代码了,像这种情况,至少,我们应该利用一下C#中的字符串换行符号@和string.Format吧。
    可以这样写:
    strEmail = "";
    strEmail 
    += string.Format(@"
    <tr>
    <td>{0}</td>
    <td>{1}</td>
    <td>{2}</td>
    <td>{3}</td>
    </tr>
    ",
    xxxxx,
    yyyyy,
    xxxxx,
    yyyyy);

    但是以上写法还不是最好的,这个时候我们想到了StringBuilder。
    因为在比较重量级的字符串拼接的场景下,最好使用StringBuilder。
    新的写法如下:
    var sbEmail = new StringBuilder(@"<table border=""1"">
    <tr>
    <td>Header A</td>
    <td>Header B</td>
    <td>Header C</td>
    <td>Header D</td>
    </tr>
    ");

    //items只是一个特定的ArrayList,用于循环添加表格的行,可以不必理会
    foreach (var item in items)
    {
      sbEmail.AppendFormat(
    @"
      <tr>
      <td>{0}</td>
      <td>{1}</td>
      <td>{2}</td>
      <td>{3}</td>
      </tr>
    ",
      xxxxx,
      yyyyy,
      xxxxx
      yyyyy);
    }

    sbEmail.AppendLine(
    "</table>");

    我们需要注意的是:AppendFormat和AppendLine

  • 相关阅读:
    anguar使用指令写选项卡
    前端性能优化
    有关楼层般的侧导航
    我对面向对象的深刻理解
    jq中的表单验证插件------jquery.validate
    JavaScript 语言中的 this
    闭包,作用域链,垃圾回收,内存泄露
    angular.extend、angular.$watch、angular.bootstrap
    Angular路由(三)
    Angular基础(二)
  • 原文地址:https://www.cnblogs.com/davidgu/p/1540634.html
Copyright © 2011-2022 走看看