首页 > 学院 > 开发设计 > 正文

C#中的i++和++i的区别

2019-11-17 02:30:02
字体:
来源:转载
供稿:网友

C#中的i++和++i的区别

我相信写代码的人对i++和++i都不陌生,但你完全搞懂这两种写法了吗?下面说明一下他们的区别。简单地说,i++ 是先用再加,++i 是先加再用。

1             int i = 0;2             int y = 1;3             y = i++;4             Console.WriteLine("y的值为:{0}", y.ToString());5             Console.WriteLine("i的值为:{0}", i.ToString());

上面的代码运行结果:

下面再看一段代码:

1             int i = 0;2             Console.WriteLine("先引用,后运算,所以 i 还是{0}", (i++).ToString());3             Console.WriteLine("现在 i 在内存中的值为{0}", i.ToString());4             Console.WriteLine("先运算,后引用,所以 i 的值为{0}", (++i).ToString());5             Console.ReadLine();

这段代码运行结果:

我们在for循环中经常用到i++,那么在for循环中i++和++i有什么区别呢?继续看代码:

1             var count = 0;2             for (int i = 1; i <= 10; i++)3             {4                 count += 1;5             }6             Console.WriteLine("循环次数为:{0}", count.ToString());7             Console.ReadLine();

运行结果:

把for循环中的i++换成++i呢?看代码:

1             var count = 0;2             for (int i = 1; i <= 10; ++i)3             {4                 count +=1;5             }6             Console.WriteLine("循环次数为:{0}", count.ToString());7             Console.ReadLine();

运行结果:

可见对于for循环的循环次数来说,i++和++i的循环次数是一样的,但是从性能上来讲,二者有无区别呢?继续看代码:

 1             Stopwatch sw = Stopwatch.StartNew(); 2             //string count = string.Empty; 3  4             //long ticks; 5             for (int i = 1; i <= 100; i++) 6             { 7                 //count = i.ToString(); 8             } 9             sw.Stop();10             var elapsed = sw.Elapsed;11             //Console.WriteLine("循环次数为:{0}", count.ToString());12             Console.WriteLine("耗时:{0}", elapsed.ToString());13             Console.ReadLine();

运行结果:

把i++换成++i,其他不变,运行结果如下:

for循环100次,循环中不做任何事情,从笔者的电脑上的运行结果上看,i++比++i好,现在把循环次数改为10000000(1000万)次,结果如何呢?

如果在for循环中加入某些事务逻辑呢?代码改为:

 1             Stopwatch sw = Stopwatch.StartNew(); 2             string count = string.Empty; 3  4             //long ticks; 5             for (int i = 1; i <= 100; i++) 6             { 7                 count = i.ToString(); 8             } 9             sw.Stop();10             var elapsed = sw.Elapsed;11             Console.WriteLine("循环次数为:{0}", count.ToString());12             Console.WriteLine("耗时:{0}", elapsed.ToString());13             Console.ReadLine();

先测试循环次数为100的结果:

i++如下:

++i如下:

将循环次数改为1000万次:

i++如下:

++i如下:

从性能上来讲,i++和++i差别不大,基本在同一数量级,在for循环中一般用i++即可。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表