当前位置: 首页 > 知识库问答 >
问题:

带有空检查的C#7开关外壳

时同
2023-03-14

C#7引入了一个名为模式的新特性,您可以将其用于Is-Express或Switch案例,如下所示:

string str = null; 
switch(str){
    case string x:
        Console.WriteLine("string " + x);
        break;
    default:
        Console.WriteLine("default");
        break;
}

你可能会认为它会放在箱子#1里,因为它是同一种类型,但它没有。

共有2个答案

吕皓
2023-03-14

实际上,它们不是因为字符串上的null。

其想法是,在c#7中使用模式切换案例会在评估案例时为空检查添加另一个案例,如果您没有添加空案例检查,它将转到默认案例,因此最好在使用此新功能时添加空案例,或者如果您知道默认情况下会做什么,则将其保留为默认情况。

希望有帮助!

柴茂材
2023-03-14

不管你怎么想,string x=null实际上根本不是字符串。它是“nothing”,分配给string类型的变量。

开关中的检查基本上与null is string相同,这在很长一段时间内都是false。使用泛型评估类型时,这是一个常见问题,但它也有其优点。

在引擎盖下,is使用作为,并进行空检查。这就是为什么它不能返回真实。可以说运算符的逻辑如下:

is = (null as string) != null
 类似资料:
  • 我需要有关switch的帮助,这是我需要帮助的代码部分。 在P之后的下一种情况下,我如何才能得到一个“回车”键。我想要的是,如果用户只按了回车键,那么程序将播放另一个回合。我在考虑做字符串。valueOf(kb.nextLine())但这不起作用。 谢谢你的帮助。

  • 我必须用内部连接执行这个JPA查询。 问题是当为空。在获取列表并迭代之前,我需要检查是否为空。 以我的编码结构,不可能在其他地方这样做。但是我必须在JPA查询本身内完成。 请帮帮忙。

  • 如何简化空检查 我已经实现了以下空条件检查 我正在用空检查条件验证Employee类的所有属性,这可以用C#简化吗。

  • 此查询引发异常: 我尝试用_: Ucanaccess抛出了一个新的错误: null 请参见执行查询的以下代码: 第一个查询成功执行,但第二个查询失败。

  • 我确信我在这里遗漏了一些显而易见的东西,但我不知道如何针对客户检查现有卡。 我在laravel应用程序中使用stripe connect api代表他人管理付款,基本流程如下: < Li > stripe < code >令牌通过< code>stripe.js创建,并与支付表单一起提交 < li >如果客户存在于本地数据库中,我获取他们的< code>stripe_id,否则使用令牌作为源/卡创

  • 本文向大家介绍sitecore 空/空检查,包括了sitecore 空/空检查的使用技巧和注意事项,需要的朋友参考一下 示例 IsNotNull 这是一种非常简单且流行的方法,用于检查项目是否不为空。它只是检查传入的对象是否为空。 IsNotNullOrEmpty 这与上面的IsNotNull相同,但是适用于字符串值而不是对象。 一片空白 这只是该IsNotNull()方法的逆过程。此方法断言该对