有人经常问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