C#中的i++和++i的区别_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C#中的i++和++i的区别

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

 2015/3/24 21:37:39  Mr.Jack  程序员俱乐部  我要评论(0)
  • 摘要:我相信写代码的人对i++和++i都不陌生,但你完全搞懂这两种写法了吗?下面说明一下他们的区别。简单地说,i++是先用再加,++i是先加再用。1inti=0;2inty=1;3y=i++;4Console.WriteLine("y的值为:{0}",y.ToString());5Console.WriteLine("i的值为:{0}",i.ToString());上面的代码运行结果:下面再看一段代码:1inti=0;2Console.WriteLine("先引用,后运算,所以i还是{0}",
  • 标签:C# 区别

我相信写代码的人对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++即可。

发表评论
用户名: 匿名