A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭正续 中级黑马   /  2012-7-31 08:26  /  2452 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

取用当前时间的方法我知道的有下面两种:
1、textBox1.AppendText(DateTine,Now.ToString())
2、textBox1.Text=textBox1.Text+DateTine,Now.ToString()
我一直都是用第二种方法,老师讲第一种方法好,我搞糊涂了,谁能帮我讲的详细一点?

7 个回复

正序浏览
王峰 中级黑马 2012-7-31 16:50:57
8#
textBox1.AppendText(DateTine,Now.ToString())对内存的占用率较小,而textBox1.Text=textBox1.Text+DateTine,Now.ToString()对内存的占用率就比较大了!
数据量小的话和两种差不那去,但是如果数据量大的话就不同了,数据量大的话,用第二种比较慢点,所以,总得来说,第一种方法是优于第二种的,而且第一种代码写的也很干练
回复 使用道具 举报
在处理较小的数据量的时候,两种方法差不多;
当需要处理大数据的时候,第一种方法对内存的占用率较小,而第二种方法对内存的占用率就比较大了!
可想而知,第一种方法是优于第二种的,而且第一种代码写的也很简洁、漂亮啊!
回复 使用道具 举报
蔡尚猛 发表于 2012-7-31 10:28
你好,刚才我也测试了,这是我测试的结果,你看看我的什么地方错了,为什么得出来的结果和你的不一样呀, ...

代码没动,又测试一次,AppendText完胜+=:L

一个小时前我这电脑是肿么了?:funk:
回复 使用道具 举报
张腾达 发表于 2012-7-31 09:05
刚才去测试 发现……只加一遍当前时间   所耗时间持平

你好,刚才我也测试了,这是我测试的结果,你看看我的什么地方错了,为什么得出来的结果和你的不一样呀,
还就是在使用+=的时候不要说循环1000次了,就是循环100次感觉都很卡,你的是这样子的情况吗?

  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             DateTime dt1 = DateTime.Now;
  4.             for (int i = 0; i < 1000; i++)
  5.             {
  6.                 textBox1.AppendText(i.ToString());
  7.             }
  8.             TimeSpan dt11 = DateTime.Now-dt1;
  9.             label1.Text = "AppendText:" + dt11.TotalMilliseconds.ToString();
  10.         }

  11.         private void button2_Click(object sender, EventArgs e)
  12.         {
  13.             DateTime dt2 = DateTime.Now;
  14.             for (int i = 0; i < 1000; i++)
  15.             {
  16.                 textBox2.Text +=i.ToString();
  17.             }
  18.             TimeSpan dt22 = DateTime.Now - dt2;
  19.             label2.Text ="+=:"+ dt22.TotalMilliseconds.ToString();
  20.         }
复制代码
回复 使用道具 举报
刚才去测试 发现……
  1. //DateTime dtStart1 = DateTime.Now;
  2.             //txtStr.Text += DateTime.Now.ToString();
  3.             //TimeSpan ts1 = DateTime.Now - dtStart1;
  4.             //MessageBox.Show("使用+=累加字符串所耗时间为:" + ts1.TotalMilliseconds + "毫秒");

  5.             DateTime dtStart2 = DateTime.Now;
  6.             txtStr.AppendText(DateTime.Now.ToString());
  7.             TimeSpan ts2 = DateTime.Now - dtStart2;
  8.             MessageBox.Show("使用AppendText累加字符串所耗时间为:" + ts2.TotalMilliseconds + "毫秒");
复制代码
只加一遍当前时间   所耗时间持平


不过我增加难度以后发现···我惊了{:soso_e153:}
  1. DateTime dtStart1 = DateTime.Now;
  2.             for (int i = 0; i <= 1000; i++)
  3.             {
  4.                 txtStr.Text += i.ToString();
  5.             }
  6.             TimeSpan ts1 = DateTime.Now - dtStart1;
  7.             MessageBox.Show("使用+=累加字符串所耗时间为:" + ts1.TotalMilliseconds + "毫秒");<font color="#ff0000">//88毫秒</font>

  8.             //DateTime dtStart2 = DateTime.Now;
  9.             //for (int i = 0; i <= 1000; i++)
  10.             //{
  11.             //    txtStr.AppendText(i.ToString());
  12.             //}
  13.             //TimeSpan ts2 = DateTime.Now - dtStart2;
  14.             //MessageBox.Show("使用AppendText累加字符串所耗时间为:" + ts2.TotalMilliseconds + "毫秒");<font color="#ff0000">//557毫秒</font>
复制代码
我写错了?{:soso_e136:}测试N遍,循环相加到100的话,  +=用6毫秒      AppendText用19毫秒
试了下加到10000的情况  +=用了6772毫秒     AppendText用了79627????!!!!{:soso_e118:}

回复 使用道具 举报
textBox1.AppendText(DateTine,Now.ToString());//.NET内有一个DateTime时间类,该类有一个获取当前时间Now方法,然后通过ToString方法转化为字符串,最后通过AppendText方法把转换后的字符串加载到文本框TextBox里面
回复 使用道具 举报
1、textBox1.AppendText(DateTine,Now.ToString())
2、textBox1.Text=textBox1.Text+DateTine,Now.ToString()
这两种都能达到效果,不用如果利用第2种的话,数据量小的话和两种差不那去,但是如果数据量大的话就不同了,数据量大的话,用第二种比较慢点,
这样说吧,第1种方法是直接给textBox1累加值,而第2种方法是先取值再相加,然后再赋值,这样岂不麻烦呀
举个例子,工厂里面有一堆货(这比如textBox1的值),你也有一箱货(比如DateTime.Now.Tostring());现在你要把你的货给工厂里面,有两种方法,一种是直接给他(这就是使用了AppendText()),另一种就是先把工厂里面的货取出来,然后你们再一起把货给工厂里面(这就是利用了第二种方法),
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马