生成数字,左边补0,效率问题,大家来看

ssguo13 2012-05-29 04:37:56
生成,左边补0
0000
0001
0002
0003
0004
至到
9999

我的程序
for (int number = 0; number <= 9999; number++)
{
if (number > 1000)
{
this.textBox3.Text += number.ToString() + "\r\n";


}
else
{
this.textBox3.Text += number.ToString().PadLeft(length, '0') + "\r\n"; //位数不够时从左笾开始用0补
}

}

如上: 从 0000 开始到 9999生成完花了 两分多钟,怎么会这么慢?
...全文
331 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuzan0123 2012-05-29
  • 打赏
  • 举报
回复
使用StringBuilder ,效率快,因为它是直接在后面追加的
qldsrx 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 5 楼 的回复:
ui更新了10000次,不慢才怪
[/Quote]
就是这个里,另外stonespace在6楼的方法也是很慢的,同样刷新了10000次界面,界面的刷新开销非常大。
study_hard_01 2012-05-29
  • 打赏
  • 举报
回复
同意stonespace 的观点,顶一个
anzhiqiang_touzi 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
ui更新了10000次,不慢才怪
[/Quote]
stonespace 2012-05-29
  • 打赏
  • 举报
回复
这样最快,

StringBuilder sb=new StringBuilder();
for (int number = 0; number <= 9999; number++)
{
sb.AppendFormat("{0:D4}\r\n",number);
}

this.textBox3.Text +=sb.ToString();
anzhiqiang_touzi 2012-05-29
  • 打赏
  • 举报
回复
将小于1000的整数转换为
0001
0002
0003
0004
0005
.....
0999
1000

string xx0 = "999".PadLeft(4, '0');//0999
string xx1 = "1".PadLeft(4, '0');//0001


select right((10000+86),4)
stonespace 2012-05-29
  • 打赏
  • 举报
回复
楼主的方法既麻烦又慢,一行程序就搞定了而且要快几百倍,

for (int number = 0; number <= 9999; number++)
{
this.textBox3.Text += number.ToString("d4") + "\r\n";
}

或者:

for (int number = 0; number <= 9999; number++)
{
this.textBox3.Text += String.Format("{0:d4}\r\n",number);
}
cheng2005 2012-05-29
  • 打赏
  • 举报
回复
ui更新了10000次,不慢才怪
glglgl2015 2012-05-29
  • 打赏
  • 举报
回复
慢就对了,使用StringBuilder效率拼接字符串,效果会大大提高
q107770540 2012-05-29
  • 打赏
  • 举报
回复
不用加if判断,直接这样即可

this.textBox3.Text += number.ToString().PadLeft(4, '0')+ "\r\n";
newxdlysk 2012-05-29
  • 打赏
  • 举报
回复
时间都花在拼字符串上了
zjwz001 2012-05-29
  • 打赏
  • 举报
回复
right('0000'+number.tostring(),4)

111,126

社区成员

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

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

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