C#基础知识拾遗:小问号大用途
2023-03-07 09:08:57 时间
C#基础知识拾遗:小问号大用途
用法一:null 判断运算符
?
表示判断实例是否为null
的简写方式。
IEnumerable<IAuthorizeData> authData =
ep?.Metadata.GetOrderedMetadata<IAuthorizeData>();
等同于:
if(null!=ep)
{
IEnumerable<IAuthorizeData> authData =
ep.Metadata.GetOrderedMetadata<IAuthorizeData>();
}
用法二:null 合并运算符
??
表示如果此运算符的左操作数不为 null
,则返回左操作数;否则返回右操作数。
IEnumerable<IAuthorizeData> authData =
ep?.Metadata.GetOrderedMetadata<IAuthorizeData>()
?? Array.Empty<IAuthorizeData>();
等同于:
IEnumerable<IAuthorizeData> authData;
if(null!=ep)
{
if(null!=ep.Metadata.GetOrderedMetadata<IAuthorizeData>())
{
authData = ep.Metadata.GetOrderedMetadata<IAuthorizeData>();
}
else
{
authData = Array.Empty<IAuthorizeData>();
}
}
else
{
authData = Array.Empty<IAuthorizeData>();
}
用法三:三元运算符
? :
表示根据布尔表达式的计算结果为 true
还是 false
来返回两个表达式中的一个结果。
IEnumerable<IAuthorizeData> authData =
ep==null ? Metadata.GetOrderedMetadata<IAuthorizeData>()
: Array.Empty<IAuthorizeData>();
用法四:可空类型
Type?
表示可为 null
类型,等同于 Nullable<T>
。
private int? getNum = null;
等同于:
private Nullable<int> getNum = null;
注意默认值不同:
int Num; //默认 0
int? Num; // 默认 null
Console.WriteLine(Num ?? 0) //输出 0
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的