你的位置:首页 > ASP.net教程

[ASP.net教程]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++即可。