11、C 中的高级特性:可空类型、扩展方法、匿名类型、元组与记录

C# 中的高级特性:可空类型、扩展方法、匿名类型、元组与记录

1. 可空类型操作符提升

可空类型 Nullable<T> 本身未定义 < > == 等操作符,但以下代码仍能正确编译和执行:

int? x = 5;
int? y = 10;
bool b = x < y;      // true

这是因为编译器从基础值类型“借用”或“提升”了小于操作符。语义上,上述比较表达式会被转换为:

bool b = (x.HasValue && y.HasValue)
          ? (x.Value < y.Value)
          : false;

即如果 x y 都有值,则使用 int 的小于操作符进行比较;否则返回 false

操作符提升意味着可以在 T? 上隐式使用 T 的操作符。虽然可以为 T? 定义操作符以提供特殊的空值行为,但大多数情况下,依靠编译器自动应用系统的可空逻辑更好。

编译器根据操作符的类别执行不同的空值逻辑:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值