c# - 是否可以在 C# 的 switch case 语句中检查空值
问题描述
我有一个带有属性的对象Value
。Value
是一个可以为空的数字。我有一些关于价值价值的场景。通常,对于 null 情况,我使用默认情况,但这一次,它在逻辑上是不正确的。如果是 100,我想做“X”,如果没有值(值为 null),我想做“Y”,否则,我想做“Z”。
switch (p.Value)
{
case 100:
// DO X
break;
default:
// Do Z
break;
}
我试过写 case is null 但它不编译:Invalid expression term 'is' (CS1525)
。是否有可能或者我应该使用 if 语句来代替?
解决方案
您可以在 switch case 中检查 null ,就像任何其他值一样,但您不能使用is
,is
用于强制转换
switch (p.Value)
{
case 100:
// DO X
case null:
// DO Y
break;
default:
// Do Z
break;
}
无论如何,项目为空的情况只有一种情况,因此您可以使用在开关周围扭曲的 if 语句来检查它
在你的情况下
if (p.Value == null){
//DO Y;
}else{
switch (p.Value)
{
case 100:
// DO X
break;
default:
// Do Z
break;
}
}
第一个选项更干净,你应该选择它
推荐阅读
- reactjs - 如何使用 jest 和酵素测试浏览器后退按钮的行为?
- c# - 无法在 EntityFrameworkCore 5.0.2 中添加迁移,未识别命令
- python - 将字典传递给视图,具有多个键:值对
- amazon-web-services - 部署“未找到”堆栈时,某些给定参数未解析
- r - 深度整合物种丰度的整合功能
- python - googletrans 模块的问题
- c# - 在 C# 中调试 GSstreamer
- python - pygame.error:视频系统未初始化。pygame.init() 已经调用但没有 sys.exit()?
- html - 放大到最大宽度的 4x4 正方形网格
- r - 如何更改使用 svars 包生成的 ggplot 图像中的分面标签