Ist es sinnvoll, dies zu tun?Boxen, eine Sache der Vergangenheit?
public static void Write<T>(T value)
{
textWriter.Write(value.ToString());
}
... wie auf diesem vermeintlichen:
public static void Write(object value)
{
textWriter.Write(value.ToString());
}
die offensichtliche null dereferenzieren Möglichkeit Abgesehen von, Wenn ich wo viele Werttypen mit dieser Methode zu schreiben, wäre nicht die ehemalig viel sein Besser, weil es eine eigene Version der Write-Methode hat, die aufgerufen wird, oder wird es einfach die Binärdatei aufblähen, wenn viel zusätzlicher Code generiert wird?
Die Performance-Implikation einer solchen Sache mag vernachlässigbar sein, aber ich bin neugierig, es ist viel kompakter als eine Überladung für jeden Werttyp in der BCL, wie die meisten Autoren in der BCL bereits tun.
Sind alle Methodenaufrufe wirklich virtuell? Ich vermutete nur die Interface-Situation, um das Boxen nötig zu machen, @Edit 3 nun, das ist etwas überraschend. Ich würde denken, dass es andersherum ist, aber mit Werttypen ist es ein bisschen anders, da Sie keine Vererbung haben können, also kann es wirklich keine virtuellen Methoden auf Werttypen und BTW geben, das ist eine großartige Antwort! –