gpt4 book ai didi

c# - 使用条件运算符时没有隐式转换

转载 作者:可可西里 更新时间:2023-11-01 07:45:03 26 4
gpt4 key购买 nike

<分区>

我有以下类(class):

abstract class AClass { }
class Foo : AClass { }
class Bar : AClass { }

当我尝试使用它们时:

AClass myInstance;
myInstance = true ? new Foo() : new Bar();

这段代码不会编译,因为“无法确定条件表达式的类型,因为‘CSharpTest.Class1.Foo’和‘CSharpTest.Class1.Bar’之间没有隐式转换”

但以下示例编译正常:

if (true)
{
myInstance = new Foo();
}
else
{
myInstance = new Bar();
}

这也可以:

myInstance = true ? (AClass) new Foo() : new Bar();

myInstance = true ? new Foo() : (AClass) new Bar();

为什么条件运算符和 if 子句的行为有如此大的差异?

26 4 0
文章推荐: c# - 如何将动态数据写入 MVC 3 Razor 中的页面布局?
文章推荐: android - Circle ci 2.0 需要 Android config.yml 的 Artifacts 文件
文章推荐: java - ArrayList 中的不兼容类型错误