在 Swift 中,有一个用于可选绑定的Guard let语句:
\nvar opt: Int? = 5\n// var opt: Int? = nil\n\nguard let nonOptional: Int = opt else { return }\nRun Code Online (Sandbox Code Playgroud)\n该guard let语句允许我们提取Int存在的值(在下面的示例中为),并且如果 option 等于5则不提取值(因为如果它等于\xe2\x80\x93 ,应用程序将崩溃)。nilnilnil
我想知道 C# 中的语义等效项是什么?
\n目前还没有。C# GitHub 存储库上有一个开放提案(自 2017 年 2 月起)。
C# 的做法类似于
var optional = (int?) 5;
...
int nonOptional;
if (optional.HasValue)
nonOptional = optional.Value;
else
return;
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它非常冗长,但那是因为我们处理的是Nullable值类型而不是引用类型。对于引用类型,它变得更加容易和简洁:
var optional = (string) null;
...
if (optional == null)
return;
// We known from now on that 'optional' is not null
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1995 次 |
| 最近记录: |