Может ли кто-нибудь объяснить мне, что происходит за кулисами, когда вы используете троичный оператор?
делает эту строку кода:
string str = 1 == 1 ? "abc" : "def";
генерируется как простой оператор if / else?
Учтите следующее:
class A
{
}
class B : A
{
}
class C : A
{
}
Теперь используем троичное выражение следующим образом:
A a1 = 1 == 1 ? new B() : new C();
это даже не компилируется с этой ошибкой:
Тип условного выражения не может быть определен, поскольку не существует неявного преобразования между «ConsoleApp1.B» и «ConsoleApp2.C»
Может кто-нибудь пролить свет на это?