繁体   English   中英

这个语法有什么作用? if(obj是SomeType obj2)

[英]What does this syntax do? if(obj is SomeType obj2)

我开始看到这些陈述,我试图围绕这些陈述。

if (obj is SomeAuto car)
{
   //Do stuff
}

如果我理解正确,我们基本上将obj转换为变量汽车,这将是一个类型“SomeAuto”?

1)本声明的官方术语是什么?

2)如果我想将if语句更改为因特定原因有条件执行会发生什么?

例如,说SomeAuto是一个基类,我只想要某种类型的汽车,或者说我想要所有的SomeAuto,除了可能是一种特殊类型。

此if语句使用在模式匹配下C#7.0中添加的is表达式。 文档指定:

is模式表达式扩展了熟悉的is运算符,以查询超出其类型的对象。

它使您能够检查obj是否属于特定类型,并将转换结果分配给变量。


在这些功能之前你可能会写:

var car = obj as SomeAuto;
if(car != null)
{
    //Do Stuff
}

作为使用时所指出的@BurnBA的差as比原来的is的是, 请注意,作为操作者只执行引用转换,可为空的转换,和装箱转换 ,因此不能被用于检查非空值类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM