我开始看到这些陈述,我试图围绕这些陈述。
if (obj is SomeAuto car)
{
//Do stuff
}
如果我理解正确的话,我们基本上将obj投射到变量汽车中,这将是一种类型" SomeAuto"?
1)本声明的官方术语是什么?
2)如果我想将if语句更改为因特定原因有条件执行会发生什么?
例如说SomeAuto是一个基类,我只想要某种类型的auto,或者说我想要所有的SomeAuto,除了可能是一种特殊类型。
答案 0 :(得分:6)
此if语句使用C# 7.0 under pattern matching中添加的is
表达式。文档指定:
is模式表达式扩展了熟悉的is运算符,以查询超出其类型的对象。
它使您能够检查obj
是否属于特定类型,并将已转换的结果分配给变量。
在这些功能之前你可能会写:
var car = obj as SomeAuto;
if(car != null)
{
//Do Stuff
}
正如@BurnBA所指出的,使用as
而不是原始is
的区别在于请注意,as运算符仅执行引用转换,可空转换和装箱转换因此不能用于检查不可为空的值类型。