C#中!<或!>是什么含义?为何相关代码不报错?
C#中
b!>c写法的含义解析 你看到的!>并不是一个单独的运算符,而是**后缀空值原谅运算符(!)**和大于运算符(>)的拆分写法,本质是两个独立的语法元素。
具体拆解:
- 后缀
!是C# 8.0及以后引入的空值原谅运算符,作用是告诉编译器:「我确认这个变量不会为null,无需抛出空值相关的警告」。 - 在你的代码里,
b是int类型(非可空值类型),本身不可能为null,所以b!完全等价于b,编译器会直接忽略这个!标记。 - 按照C#的运算符优先级,后缀
!的优先级高于算术运算符+和关系运算符>,所以a + b!>c会被编译器解析为:
也就是和(a + (b!)) > c(a + b) > c完全等效,最终执行逻辑是判断2+4>5是否成立(结果为true,所以会输出abc)。
扩展说明:
如果b是可空值类型(比如int? b = 4),b!就会起到实际作用:它会将可空类型强制转换为非可空的int(等效于(int)b),同时抑制编译器的空值警告。
内容的提问来源于stack exchange,提问作者pythin
相关产品推荐
相关产品推荐

