c# - C# switch 表达式不正确的可空性
问题描述
我注意到,当使用包含空检查作为范围表达式的switch 表达式时,在 Visual Studio (16.7.6) 中未正确解释 arm/cases 中值的可空性状态。例如:
string? value = GetSomeString();
var description = (value != null) switch
{
true when value.Length == 0 => "Empty",
true when value.Length == 1 => "Uno",
true when value.Length == 3 => "Third time's a charm",
_ => "null"
};
在这里,我希望在 switch 块中知道所有实例value
都不为空,给定我们正在打开的条件。最后一个/默认情况处理空情况。然而,Visual Studio 认为第一个实例可能为空:
我做错了什么,这是分析仪的错误,还是其他?
解决方案
推荐阅读
- google-pagespeed - 出现错误 - Lighthouse 返回错误:内部:APP::1:渲染器异常终止,状态 = 崩溃 exit_code = 1
- cplex - Cplex如何在约束中使用变量进行索引
- mysql - MySQL 将一张表连接到另外两张表
- wordpress - Wordpress - woocommerce - myaccount/orders-list.php - 获取产品图片
- metadata - 从自动查询元数据中隐藏类型
- python - 使用 for 循环出现意外的 KeyError,但手动时没有
- angular - 如果我将鼠标悬停在 Plotly 中,如何显示与图例中所述不同的跟踪名称?
- mysql - mysql.createpool 函数是同步的还是异步的?
- latex - 如何在 Latex 中编写内联矩阵
- powershell - 如何从 PowerShell (v5.1) 中的数组中删除项目