有人经常问String和StringBuilder有什么区别,啥时候用什么呢?
其实,如果是简单的字符串应用的话,一般都用string。
下面我们来举个例子:
以上属于比较丑陋的代码了,像这种情况,至少,我们应该利用一下C#中的字符串换行符号@和string.Format吧。
可以这样写:
但是以上写法还不是最好的,这个时候我们想到了StringBuilder。
因为在比较重量级的字符串拼接的场景下,最好使用StringBuilder。
新的写法如下:
我们需要注意的是:AppendFormat和AppendLine
其实,如果是简单的字符串应用的话,一般都用string。
下面我们来举个例子:
string strEmail = "";
strEmail += "<tr><td>" + xxxxx + "</td>";
strEmail += "<td>" + yyyyy + "</td>";
strEmail += "<td>" + xxxxx+ "</td>";
strEmail += "<td>" + yyyyy + "</td></tr>";
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);
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>");
<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