首页 > 解决方案 > 是否可以在 C# 的 switch case 语句中检查空值

问题描述

我有一个带有属性的对象ValueValue是一个可以为空的数字。我有一些关于价值价值的场景。通常,对于 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 语句来代替?

标签: c#switch-statement

解决方案


您可以在 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;
  }
}

第一个选项更干净,你应该选择它


推荐阅读