C#温故知新(2)---问号的那些事儿??

本文介绍了C#中的三种特殊用法:三目运算符、可空值类型及null值合并运算符。三目运算符可根据条件选择返回两个值之一;可空值类型允许值类型变量赋值为null;null值合并运算符可在变量为null时提供默认值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.引言

无意中看到别人一行代码“a=a??-1”,问了一下度娘,才发现原来是这么个意思,于是总结了一下?在C#的用处,主要包含三个方面:三目运算符,可空值类型,null值合并运算符。文中若有纰漏或者错误,请留言指出,不必客气。

2.三目运算符(?:)

表达式?值B:值C;
三目运算中的?大概是我们最先接触的,?与:一起使用,若表达式为true则整个运算取结果值B,否则取值C,看看小面的一段代码:

//三木运算符
dynamic exObj = new ExpandoObject();
exObj.Name = "三木运算符";
exObj.Gender = false;
Console.WriteLine(string.Format("{0},性别:{1}", exObj.Name, exObj.Gender ? "男" : "女"));

这里写图片描述

3.可空值类型

【ValueType? Name】 等价于【System.Nullable< T >】

int? age = null;
Console.WriteLine(age.HasValue);
Console.WriteLine(age.GetValueOrDefault());
Console.WriteLine(age.GetValueOrDefault() == null);
Console.WriteLine(age == null);

这里写图片描述

(1)值类型后面紧跟?(int? a=null)后可以给值类型变量赋空值
(2)写法是System.Nullable< T >的简写(语法糖)
(3)判空,HasValue或者直接a==null
(4)Console.WriteLine(a.Value == null);如果a值为空,则引发 System.InvalidOperationException异常

4.null值合并运算符

【Type A=B??C】若B为空则A取值C,否则A取值B

int? age = null;
age = age ?? 25;
Console.WriteLine("age:" + age);

这里写图片描述

(1)B必须是可空的值类型或者引用类型
(2)null合并运算符为右结合运算符,即操作时从右向左进行组合的。如,“a??b??c”的形式按“a??(b??c)”计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值