前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#基础知识拾遗:小问号大用途

C#基础知识拾遗:小问号大用途

作者头像
郑子铭
发布2023-02-12 10:41:14
3160
发布2023-02-12 10:41:14
举报

C#基础知识拾遗:小问号大用途

用法一:null 判断运算符

? 表示判断实例是否为null 的简写方式。

代码语言:javascript
复制
IEnumerable<IAuthorizeData> authData =
    ep?.Metadata.GetOrderedMetadata<IAuthorizeData>();

等同于:

代码语言:javascript
复制
if(null!=ep)
{
    IEnumerable<IAuthorizeData> authData =
    ep.Metadata.GetOrderedMetadata<IAuthorizeData>();
}

用法二:null 合并运算符

?? 表示如果此运算符的左操作数不为 null,则返回左操作数;否则返回右操作数。

代码语言:javascript
复制
IEnumerable<IAuthorizeData> authData =
    ep?.Metadata.GetOrderedMetadata<IAuthorizeData>()
        ?? Array.Empty<IAuthorizeData>();

等同于:

代码语言:javascript
复制
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 来返回两个表达式中的一个结果。

代码语言:javascript
复制
IEnumerable<IAuthorizeData> authData =
    ep==null ? Metadata.GetOrderedMetadata<IAuthorizeData>()
        : Array.Empty<IAuthorizeData>();

用法四:可空类型

Type? 表示可为 null 类型,等同于 Nullable<T>

代码语言:javascript
复制
private int? getNum = null;

等同于:

代码语言:javascript
复制
private Nullable<int> getNum = null;

注意默认值不同:

代码语言:javascript
复制
int Num; //默认 0
int? Num; // 默认 null
Console.WriteLine(Num ?? 0) //输出 0
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C#基础知识拾遗:小问号大用途
    • 用法一:null 判断运算符
      • 用法二:null 合并运算符
        • 用法三:三元运算符
          • 用法四:可空类型
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档