工具用的顺手吗?
你的反馈能帮助我们做得更好
快速查询C#运算符优先级与结合性对照表
此表是收录语法的参考子集,不执行或验证示例。数字是本站分组,不能替代所用语言版本的完整语法、类型和求值规则;例子保留原始代码与字面值。 参考来源
x.y主表达式左结合访问对象的成员(字段、方法、属性等)。
obj.Namex?.y主表达式左结合若左操作数为 null 则返回 null,否则访问其成员,避免 NullReferenceException。
obj?.Namef(x)主表达式左结合调用方法或委托。
Console.WriteLine(x)a[i]主表达式左结合访问数组、列表或索引器。
arr[0]a?[i]主表达式左结合若左操作数为 null 则返回 null,否则访问其索引。
list?[0]x++主表达式左结合返回当前值后将变量加 1。
i++x--主表达式左结合返回当前值后将变量减 1。
i--new主表达式右结合创建类型的新实例。
new List<int>()typeof(T)主表达式无结合性返回类型的 System.Type 对象。
typeof(string)checked主表达式无结合性在运算时检查算术溢出,溢出时抛出 OverflowException。
checked(a + b)unchecked主表达式无结合性禁用算术溢出检查,允许结果回绕。
unchecked(a + b)default(T)主表达式无结合性返回类型的默认值(引用类型为 null,值类型为 0 等)。
default(int)nameof主表达式无结合性在编译期返回变量、类型或成员的字符串名称,用于日志或异常。
nameof(MyClass)delegate主表达式左结合声明匿名委托方法。
delegate(int x) { return x * 2; }sizeof主表达式无结合性返回值类型在内存中占用的字节数。
sizeof(int)->主表达式左结合在 unsafe 上下文中通过指针访问结构体成员。
p->X+x一元运算右结合返回操作数的值,保留符号。
+5-x一元运算右结合返回操作数的相反数。
-x!x一元运算右结合对 bool 值取反。
!isReady~x一元运算右结合对整数按位取反,每一位 0 变 1、1 变 0。
~0b1010++x一元运算右结合先将变量加 1,再返回新值。
++i--x一元运算右结合先将变量减 1,再返回新值。
--i(T)x一元运算右结合将表达式显式转换为指定类型。
(int)3.14await一元运算右结合异步等待 Task 完成并返回结果。
await GetAsync()&x一元运算右结合在 unsafe 上下文中获取变量的地址。
&value*x一元运算右结合在 unsafe 上下文中读取指针指向的值。
*ptrue / false一元运算右结合由用户在类型上定义的 true/false 运算符,常用于短路逻辑。
operator true(MyType x)x..y一元运算左结合构造 System.Range,用于切片,例如 arr[1..4]。
arr[1..4]switch一元运算左结合基于模式匹配返回对应的值。
x switch { 1 => "a", _ => "b" }with一元运算左结合复制 record 并修改部分属性。
p with { Age = 18 }*乘除取余左结合两个操作数相乘。
a * b/乘除取余左结合整数除法向零取整;浮点除法返回精确结果。
10 / 3%乘除取余左结合返回两数相除的余数。
10 % 3+加减运算左结合数值相加,或将字符串拼接。
"a" + "b"-加减运算左结合数值相减或从委托链中移除目标。
a - b<<位移运算左结合将位向左移动指定位数,低位补 0。
1 << 3>>位移运算左结合将位向右移动,有符号数保留符号。
8 >> 2>>>位移运算左结合C# 11+ 提供,按位右移并在高位补 0,忽略符号位。
(-1) >>> 1<关系与类型左结合比较两个操作数,左小于右返回 true。
a < b>关系与类型左结合比较两个操作数,左大于右返回 true。
a > b<=关系与类型左结合左小于或等于右返回 true。
a <= b>=关系与类型左结合左大于或等于右返回 true。
a >= bis关系与类型左结合测试对象是否为指定类型或匹配模式。
obj is string sas关系与类型左结合尝试类型转换,失败时返回 null 而不是抛异常。
obj as MyType==相等判断左结合判断两个值是否相等,引用类型默认比较引用,可被重载。
a == b!=相等判断左结合判断两个值是否不相等,可被重载。
a != b&位与逻辑左结合整数按位与,bool 上为非短路逻辑与。
a & b^位与逻辑左结合整数按位异或,bool 上为逻辑异或。
a ^ b|位与逻辑左结合整数按位或,bool 上为非短路逻辑或。
a | b&&位与逻辑左结合短路逻辑与:左操作数为 false 时不计算右操作数。
a && b||位与逻辑左结合短路逻辑或:左操作数为 true 时不计算右操作数。
a || b??条件运算右结合若左操作数为 null 则返回右操作数。
name ?? "匿名"?:条件运算右结合根据条件返回两个值之一,等价于 if-else 表达式。
x > 0 ? "正" : "负"=赋值运算右结合将右操作数的值赋给左操作数。
x = 10+=赋值运算右结合x = x + y,或为事件添加处理器。
x += 1-=赋值运算右结合x = x - y,或为事件移除处理器。
x -= 1*=赋值运算右结合x = x * y 的简写。
x *= 2/=赋值运算右结合x = x / y 的简写。
x /= 2%=赋值运算右结合x = x % y 的简写。
x %= 3&=赋值运算右结合x = x & y 的简写。
x &= 0xFF|=赋值运算右结合x = x | y 的简写。
x |= 0x01^=赋值运算右结合x = x ^ y 的简写。
x ^= mask<<=赋值运算右结合x = x << y 的简写。
x <<= 2>>=赋值运算右结合x = x >> y 的简写。
x >>= 2>>>=赋值运算右结合x = x >>> y 的简写,C# 11+ 支持。
x >>>= 1??=赋值运算右结合仅当左操作数为 null 时才赋值。
name ??= "匿名"=>Lambda 表达式右结合定义匿名函数或表达式体成员。
(x, y) => x + y概览
了解工具能解决的问题、计算或处理逻辑,以及数据边界。
运算符优先级说明不同运算符同时出现在表达式中时,哪些部分先结合;相同优先级时,再看关联性。对照页把条目按数字级别分组,数字越小表示优先级越高,并列出符号、名称、说明、示例和结合性,便于按符号或关键词速查。
例如 2 + 3 * 4 中,乘法优先级高于加法,因此分组为 2 + (3 * 4),结果为 14。加括号可以明确改变分组,如 (2 + 3) * 4 得到 20。再看 1 + 2 * 3 > 6 && true,可先按乘法、加法、比较、条件与的顺序分组,写成 ((1 + (2 * 3)) > 6) && true。微软 C# 参考文档也按从高到低列出运算符,并说明同级运算符的关联性。
左结合的同级运算通常从左向右分组,例如 a + b - c 按 (a + b) - c 理解;赋值、空值合并、条件和 Lambda 运算符则按右结合规则处理,例如 x = y = z 分组为 x = (y = z)。关联性描述的是表达式分组,不能简单替代对操作数求值顺序的分析。遇到连续除法或减法时,这一点尤其直观:a - b - c 与 a - (b - c) 的分组不同,结果也可能不同。
Microsoft Learn 的 C# 运算符参考可用于核对当前语言文档中的优先级、结合性和完整运算符列表。
指南
按步骤完成操作,并通过示例核对输入与结果。
可输入运算符符号、名称、说明文字、示例片段或优先级数字,例如 ??、短路 或 17。
可选择主表达式、一元、乘除、加减、位移、关系与类型、相等、逻辑、条件、赋值或 Lambda 类别,再按左结合、右结合或无结合性过滤。
查看级别、符号、名称、结合性、说明和示例;需要复用时可复制符号或示例。遇到复杂表达式,按意图补括号并在目标 C# 版本下编译确认。结果会按级别分组,同组条目便于对照同优先级符号;复制示例后,也要结合变量类型和所在语境阅读。
没有匹配结果时,试试只输入符号、类别关键词或清除一个筛选条件。搜索结果为空只表示当前筛选组合没有匹配条目。查看同一级别的多个结果时,可先比较它们的分组,再用关联性判断括号省略后怎样结合;若表达式涉及条件逻辑,还要分别检查短路行为。分类和结合性筛选会同时作用于结果,想回到完整列表时需把两类筛选都恢复为“全部”。
例如布尔表达式中的 && 与 || 属于条件逻辑,可能根据左侧结果跳过右侧计算;& 和 | 在布尔场景下不是短路运算。若右侧调用方法或修改状态,这一区别会影响程序行为,不能只看符号相似就替换。
场景
查看这项工具在不同工作与生活流程中的用法。
学习者可以先查乘法、比较或逻辑运算符的相对级别,再把示例改写成带括号的形式,比较分组差异。
维护人员可针对容易误读的条件、赋值或空值判断查结合性,并在评审中用括号显式写出团队希望表达的分组。
问答
集中解答高频疑问与容易混淆的问题。
优先级比较不同级别的运算符谁先结合;结合性只在同一级别出现多个运算符时确定分组方向。两者决定语法分组,不能据此推断所有操作数都会按同一方向求值。
不是。本页采用数字越小、优先级越高的编号方式;例如级别 1 高于级别 17。微软文档则直接按从高到低排列分组。
本页是便于检索的整理表,未承诺覆盖所有语言版本和上下文语法。请核对目标 C# 版本及 Microsoft Learn 的当前参考文档;页面本身不会编译或执行输入表达式。
须知
使用前了解适用范围、结果限制与必要提醒。
此页是速查参考,不是 C# 编译器,也不是所有版本运算符与语法的完整替代目录。C# 会随语言版本扩展,符号还可能受类型、上下文和运算符重载影响。遇到未列出的条目、编译错误或关键业务逻辑时,应查看对应版本的官方语言参考并在目标项目中验证。为减少误读,即使知道默认优先级,也建议对复杂条件和混合运算显式添加括号。
推荐
查找相关工具、专题与可用的 API 能力。