??
和_
可以简化代码,下面通过一个例子分析一下
简化前
var loginContext = _auth.GetCurrentUser();
if (loginContext == null)
{
throw new CommonException("登录已过期", Define.INVALID_TOKEN);
}
简化后
_ = _auth.GetCurrentUser() ?? throw new CommonException("登录已过期", Define.INVALID_TOKEN);
解析:
这段代码使用了 C# 的空合并运算符 ??
,它的作用是判断 _auth.GetCurrentUser()
是否为 null,如果不为 null 则返回 _auth.GetCurrentUser()
,否则抛出一个 CommonException
异常,异常信息为 “登录已过期”,异常代码为 Define.INVALID_TOKEN
。
其中 _
是一个占位符,表示这里返回的值不会被使用,可以忽略。