大家认为下面的写法那种好,为什么?

isabel1169 2006-12-01 09:29:28
1.StringBuilder address = new StringBuilder();
Address.Append("Bangalore");
Address.Append("Delhi");

2.string address = null;
address = "Bangalore"
address += "Delhi";
...全文
155 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Influence 2006-12-01
  • 打赏
  • 举报
回复
谢:shalen520(Love will keep us alive)
http://www.codeproject.com/useritems/StringBuilder_vs_String.asp
liuxuebest 2006-12-01
  • 打赏
  • 举报
回复
StringBulider对象得append()方法可以被重载,允许传递一个转换成字符串得变量或者各种各样得内置类型得对象
shalen520 2006-12-01
  • 打赏
  • 举报
回复
一次简单的字符串拼接没有必要动用StringBuilder,除非是频繁的拼接

对于StringBuilder和String的性能以及何时使用,下面的文章有非常详细的讨论
http://www.codeproject.com/useritems/StringBuilder_vs_String.asp
Qim 2006-12-01
  • 打赏
  • 举报
回复
如果是大量对字符串进行操作,用第一种是最好的选择。
而仅是用一两次,建议用string。小巧实用。

楼上的已经解释的很清楚了。
bigrongshu 2006-12-01
  • 打赏
  • 举报
回复
两个字符串相加,效率差不多,

很多的话第一种优势明显
buyi2004 2006-12-01
  • 打赏
  • 举报
回复
String 对象串联操作总是用现有字符串和新数据创建新的对象。StringBuilder 对象维护一个缓冲区,以便容纳新数据的串联。如果有足够的空间,新数据将被追加到缓冲区的末尾;否则,将分配一个新的、更大的缓冲区,原始缓冲区中的数据被复制到新的缓冲区,然后将新数据追加到新的缓冲区。

String 或 StringBuilder 对象的串联操作的性能取决于内存分配的发生频率。String 串联操作每次都分配内存,而 StringBuilder 串联操作仅当 StringBuilder 对象缓冲区太小而无法容纳新数据时才分配内存。因此,如果串联固定数量的 String 对象,则 String 类更适合串联操作。这种情况下,编译器甚至会将各个串联操作组合到一个操作中。如果串联任意数量的字符串,则 StringBuilder 对象更适合串联操作;例如,某个循环对用户输入的任意数量的字符串进行串联。
liuxuebest 2006-12-01
  • 打赏
  • 举报
回复
第一个的语法比较通顺,符合编码规范
wangkun9999 2006-12-01
  • 打赏
  • 举报
回复
1
wuda8 2006-12-01
  • 打赏
  • 举报
回复
Tenner(BE.Tenner)
++++++++++++++++++++++++
支持
DeanMonica 2006-12-01
  • 打赏
  • 举报
回复
如果相加的字符串量不多的话就差不多

StringBuilder类是个高效的类,StringBuilder.Append连接字符串的方法是非常快的。用于连接大量的字符串,其速度的优越性就会体现出来。
lxwin01 2006-12-01
  • 打赏
  • 举报
回复
建议使用StringBuilder,统一管理字符串,速度不用说了.你还可以包装StringBuilder如没有Clear方法你进行扩展等.
Ilovesport 2006-12-01
  • 打赏
  • 举报
回复
StringBuilder在比较长的字符连接时比string执行速度快!
pumaadamsjack 2006-12-01
  • 打赏
  • 举报
回复
当然是第一种了,原因第一种StringBuilder类的 adress只开辟一个空间来保存字符串("Bangalore"),接着加上值,就是把这个字符串直接修改了
第二种 address = "Bangalore" 也是一样在内存开辟空间
但是 address += "Delhi"这个就不一样了,它是要在内存中单独开辟空间来保存新的address

string 虽然是引用类型,但是区别于其它引用类型,更类似于值类型
Tenner 2006-12-01
  • 打赏
  • 举报
回复
明显是第一种好,性能是第二种的数十到数百倍
C#里的字符串很特别,对一个已经有值的字符串做任何修改操作,实际上是生成了一个新字符串,因此开销很大

楼主可以试试以下两段代码:
1:
string s = null;
for (int i=1; i<100000; i++)
{
s += "a";
}

2:
StringBuilder sb = new StringBuilder();
for (int i=1; i<100000; i++)
{
sb.Append('a');
}

运行一下看看时间就知道了
小y的CSDN博客 2006-12-01
  • 打赏
  • 举报
回复
StringBuilder 规范
string 简单

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧