Warum erlaubt C # 3 die implizite Konvertierung von Literal Null (0) in eine beliebige Aufzählung?

In C # 3 (Visual Studio 2008) wurde eine grundlegende Änderung an der Sprache vorgenommen (http://msdn.microsoft.com/en-us/library/cc713578.aspx(siehe Änderung 12), mit der jede Literalnull implizit in eine Aufzählung konvertiert werden kann. Dies scheint in vielerlei Hinsicht seltsam. Weiß jemand, warum dies Teil der Spezifikation ist? Warum nicht eine wörtliche? Oder sieben? Warum ist Null etwas Besonderes? Und es gibt einige sehr intuitive Möglichkeiten zur Überlastungsauflösung. Zum Beispiel.

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"

Sehr verwirrend und eine absichtlich eingeführte Veränderung der Sprache. Irgendwelche Ideen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage