小编Lir*_*ins的帖子

C#中的三元运算符

任何人都可以向我解释当你使用三元运算符时幕后会发生什么?这行代码:

string str = 1 == 1 ? "abc" : "def";
Run Code Online (Sandbox Code Playgroud)

是作为一个简单的if/else语句生成的?考虑以下:

class A
{
}

class B : A
{
}

class C : A
{
}
Run Code Online (Sandbox Code Playgroud)

现在使用三元表达式如下:

A a1 = 1 == 1 ? new B() : new C();
Run Code Online (Sandbox Code Playgroud)

这甚至没有使用此错误编译:

无法确定条件表达式的类型,因为"ConsoleApp1.B"和"ConsoleApp2.C"之间没有隐式转换

任何人都可以阐明这个吗?

.net c# compiler-errors ternary-operator

2
推荐指数
1
解决办法
1991
查看次数

标签 统计

.net ×1

c# ×1

compiler-errors ×1

ternary-operator ×1