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),
}