当前位置:首页 > 开发 > C# > 正文内容

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

C#9个月前 (03-31)

核心区别

  • 操作顺序
               i++:先返回变量当前值,再自增1(表达式返回原值)
               ++i:先自增1,再返回变量新值(表达式返回新值)

  • 返回值类型
               i++返回原值副本(右值),++i返回变量本身(左值)

  • 效率差异
               简单类型无差别,复杂对象i++可能因副本稍慢

控制台测试代码

using System;

class Program
{
    static void Main()
    {
        // 场景1:独立语句中的行为相同
        int a = 5;
        a++;
        ++a;
        Console.WriteLine($"独立操作后 a 的值:{a}"); // 输出7

        // 场景2:赋值时的差异
        int i = 1, j = 1;
        int x = i++; // x=1,i 变为2
        int y = ++j; // y=2,j 变为2
        Console.WriteLine($"x={x}, y={y}, i={i}, j={j}");

        // 场景3:表达式中的使用
        int k = 0;
        Console.WriteLine(k++); // 输出0
        Console.WriteLine(++k); // 输出2

        // 场景4:循环中的表现
        Console.WriteLine("\n循环测试:");
        for (int m = 0; m < 3; m++) { Console.Write(m); } // 012
        Console.WriteLine();
        for (int n = 0; n < 3; ++n) { Console.Write(n); } // 012
    }
}

输出结果

独立操作后 a 的值:7
x=1, y=2, i=2, j=2
0
2

循环测试:
012
012

关键总结

优先使用++i:在无需旧值的场景更高效

⚠️ 避免复杂表达式:如int z = ++i + i++会导致未定义行为

💡 左值特性++i可用于链式操作(如(++i).Method()

转载请注明出处。

本文链接:http://www.pythonopen.com/?id=7868

相关文章

C# 延时命令

方法1System.Threading.Thread.Sleep(1000);缺点:如果在主线程使用...

C# 跳出foreach循环

在 C# 中,如果你想在 foreach 循环内部提前跳出当前这一轮循环,继续执行下一轮循环,可以使...

C# 缩减代码量的一些方式

static void Main() { Thread thre...

c# Invalidate、Refresh、Refreshitem、Refreshitems的功能

Invalidate方法功能概述Invalidate方法主要用于使控件的特定区域(整个控件或部分区域...

C# Byte[]转为Bitmap

在 C# 中,可以使用System.Drawing命名空间下的相关类将byte[]类型的数据转换为B...

C# using与多重using

1. using 语句概述在 C# 中,using 语句主要用于确保实现了 IDisposable...