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