C# 3 (Visual Studio 2008) ha introdotto una modifica della lingua (http://msdn.microsoft.com/en-us/library/cc713578.aspx, vedere la modifica 12) che consente di convertire qualsiasi zero letterale in un Enum. Questo sembra strano in molti modi. Qualcuno sa perché questo fa parte delle specifiche? Perché non letterale? O sette? Perché lo zero è speciale? E fa alcune scelte di risoluzione di sovraccarico molto controintuitive. Per esempio.Perché C# 3 consente la conversione implicita dello zero letterale (0) in qualsiasi Enum?
function string F(object o) { return o.ToString(); }
function string F(DbType t) { return t.ToString(); }
int i = 0;
F((long)0) == "String" // would have been "0" in VS 2005
F(0) == "String"
F(i) == "0"
Molto confuso e una modifica introdotta intenzionalmente nella lingua. Qualche idea?
Se si intende apportare una modifica così drastica a una domanda (soprattutto una che ha già votato per le risposte), sarebbe meglio, per i risponditori, i browser e l'utente, creare una nuova domanda. Avrai ora le risposte a due domande diverse, la prima delle quali probabilmente i browser occasionali non vedranno mai nella cronologia delle modifiche. – joshperry
e, come per magia, la domanda è stata rimandata alla sua originale forma fuorviante! bisogna notare che il campione dato non è infranto in VS 2008. Farò quel cambiamento e vedrò se si attacca ... –