Gibt es gute Gründe, warum Ternaries in C # begrenzt sind?

Schlägt fehl:

object o = ((1==2) ? 1 : "test");

Gelingt es:

object o;
if (1 == 2)
{
    o = 1;
}
else
{
    o = "test";
}

Der Fehler in der ersten Anweisung ist:

Der Typ des bedingten Ausdrucks kann nicht bestimmt werden, da keine implizite Konvertierung zwischen 'int' und 'string' erfolgt.

Warum muss es aber sein, ich weise diese Werte einer Variablen vom Typ Objekt zu.

Bearbeiten: Das obige Beispiel ist trivial, ja, aber es gibt Beispiele, bei denen dies sehr hilfreich wäre:

int? subscriptionID; // comes in as a parameter

EntityParameter p1 = new EntityParameter("SubscriptionID", DbType.Int32)
{
    Value = ((subscriptionID == null) ? DBNull.Value : subscriptionID),
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage