Warum ist das überschreiben der statischen Methode sind erlaubt in C#

protected static new void WhyIsThisValidCode()
{
}

Warum sind Sie erlaubt das überschreiben von statischen Methoden?
Nichts als bugs kommen kann, aus, es doensn nicht funktionieren, wie Sie denken würde.

Nehmen Sie die folgenden Klassen.

class BaseLogger
{
    protected static string LogName { get { return null; } }

    public static void Log(string message) { Logger.Log(message, LogName); }
}

class SpecificLogger : BaseLogger
{
    protected static string LogName { get { return "Specific"; } }
}

dies ist alowed, und der code

SpecificLogger.Log("test");

ist altso sind erlaubt, aber es muss nicht das tun, was würden Sie denken, indem Sie sich den code.

ruft es Logger.Log mit LogName = null.

So, warum ist dies erlaubt?

  • Wie schon andere gesagt haben, ist dies nicht überschreiben - und es funktioniert genau so, wie ich es erwarten. Bitte nicht davon ausgehen, jeder denkt das gleiche wie Sie tun.
InformationsquelleAutor AndreasN | 2010-11-16
Schreibe einen Kommentar