我有三个继承自'IFoo'接口的类(classA,classB和classC); 如果使用这个
var fooItem = (request.classAitem ?? (request.classBitem as IFoo ?? request.classCitem))
Run Code Online (Sandbox Code Playgroud)
要么
var fooItem = (request.classAitem ?? request.classBitem ?? request.classCitem as IFoo)
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但其他组合甚至不会编译:
var fooItem = (request.classAitem as IFoo ?? request.classBitem ?? request.classCitem)
Run Code Online (Sandbox Code Playgroud)
要么
var fooItem = (request.classAitem ?? request.classBitem ?? request.classCitem) as IFoo
Run Code Online (Sandbox Code Playgroud)
在我看来,在某些情况下,编译器隐式地将子类解包到它们的IFoo接口,但在其他一些情况下却没有.你们有什么感想?