社区
C#
帖子详情
大家认为下面的写法那种好,为什么?
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
打赏
收藏
大家认为下面的写法那种好,为什么?
1.StringBuilder address = new StringBuilder(); Address.Append("Bangalore"); Address.Append("Delhi"); 2.string address = null; address = "Bangalore" address += "Delhi";
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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 简单
python中x=y=z=100语句的
写法
是错误的_python编写脚本练习题
##python test##1. 编写脚本,使用print语句编写脚本在屏幕上显示你名字、年龄、最喜欢的颜色和与你相关的一些事情(背景、兴趣、爱好等等);2. 阅读
下面
的 Python 脚本:#!/usr/bin/env python1 + 2 * 4a) 你
认为
这段脚本是用来做什么的?答:计算b) 你
认为
这段脚本会输出什么?答:空c) 输入以上代 码,并保存为脚本,然后运行它。它所做的与你的预...
const的一种易混淆的
写法
const的两种常见书写风格: const double d = 1.1; //
写法
(1) double const d2 = 2.2; //
写法
(2)这两种
写法
语法上都对,且意思一样。都定义了一个double常量。你更赞同哪种
写法
?
写法
(1)更常见,我却
认为
写法
(2)更合理。
下面
例子中
写法
(1)会导致严重的误解: typedef char *cstr; const cstr cs =
php 7.2 双问号,PHP7的双问号“??”语法以及和“?:”的区别
PHP7中增加了双问号“??”的语法,我们来讨论一下这个新语法怎么使用,先看
下面
这个简单的语句:echo $a ?? -1;这行语句是一个判断语句,判断变量$a是否存在,存在的话输出变量$a,否则输出-1。很显然由于变量$a没有被定义,所以输出的结果是“-1”。我们再来看
下面
这行简单的语句:echo $a ? 1 : -1;上面这行代码是判断变量$a是否为空,如果为空的话输出“-1”,否则输出“1...
SQL Server 存储过程中处理多个查询条件的几种常见
写法
分析,我们该用
那种
写法
本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的
写法
时,往往很迷茫, 不知道各种
写法
孰优孰劣,该选用
那种
写法
,以及各种
写法
优缺点,本文以一个简单的查询存储过程为例,简单说一下各种
写法
的区别,以及该用
那种
写法
专业DBA以及熟悉数据库的同学请无视。 废话不多
配置文件 .yml
写法
小结
yaml 是什么? 在 github 一些开源项目里经常可以看到 .travis.yml 文件,后来接触持续集成这个概念时发现很多文件都是 .yml 后缀的文件。我在 阮一峰-YAML 语言教程 里了解了它的作用以及基本
写法
,他的那篇文章描述的略微有点啰嗦,实际看到的大多数配置文件还是及其简单的,而我们要做的是能读懂它们,就像读懂 .json 一样。 yaml 语言(或者说是一种规范吧)可以编写 ...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章