Es ist ziemlich umständlich, eine neue Instanz einer Klasse zu erstellen, nur um die Methode aufzurufen. Aber das ist, wie sie es jetzt tun
Sie sind lächerlich, um stumpf zu sein.
Wie commenter Groo auf die native kompilierte Ebene hingewiesen hat, unterscheidet sich eine Instanzmethode nicht einmal von einer statischen Methode. Es ist nur so, dass ein impliziter Parameter an die Instanzmethode übergeben wird, während bei der statischen Methode "Was Sie sehen, ist das, was Sie bekommen".
Die Laufzeit kann den Zugriff auf eine Methode optimieren. Es kompiliert die Methode möglicherweise nicht, bis sie das erste Mal ausgeführt wird. Es lädt möglicherweise nicht einmal die IL von Ihrer Baugruppe in den Speicher, bis die IL tatsächlich benötigt wird. Aber sie kann diese Optimierungen mit statischen und Instanzmethoden gleichermaßen durchführen.
In der Tat ist das Erzwingen aller Methoden zu Instanzmethoden schlechter als statische Methode verwenden, da es bedeutet, dass für einige Methoden willkürlich ein ansonsten nutzloses Objekt erstellt wird. Während die Laufzeit möglicherweise feststellen kann, dass die Objektreferenz unbenutzt ist und daher eine minimale Lebensdauer hat, kann sie nicht vermeiden, das Objekt vollständig zuzuweisen, selbst ein degeneriertes Objekt wird etwas Speicher belegen, während es lebt, und es wird hinzugefügt zu den Kosten der Müllabfuhr.
Und darüber hinaus nehmen wir an, dass Ihre Kollegen für einen Moment richtig waren. Was hättest du gewonnen? Irgendein messbarer Leistungsunterschied überhaupt? Zweifelhaft. Machen wir uns nichts vor: Managed Code und insbesondere C# haben das Potenzial, eine Reihe von leistungsreduzierenden Implementierungsdetails vor uns zu verbergen. Der Hauptgrund, warum wir eine verwaltete Code-Sprache wie C# verwenden, ist, dass wir so viel an Produktivität und Code-Korrektheit gewinnen, dass diese möglichen Ineffizienzen es wert sind. Die meiste Zeit und besonders auf modernen Computern sind sie praktisch unsichtbar.
Wie es passiert, Ihre Kollegen sind nicht richtig, und es ist in keiner Weise vorteilhaft, in Instanzmethoden, Methoden, die sonst statische Methoden sein könnten. Aber selbst wenn das nicht der Fall wäre, um Zeit damit zu verschwenden, verschleierten, unaussprechlichen Code zu schreiben, um einige ungemessene, nicht bewiesene Leistungskosten zu vermeiden, ist eine Verschwendung.(Und ich weiß, niemand hat sich die Mühe gemacht, den tatsächlichen Leistungsunterschied zu vergleichen, denn wenn sie hätten, hätten sie keine Verbesserung der Leistung gefunden, wenn sie alle statischen Methoden eliminiert hätten).
http://programmers.stackexchange.com/questions/161222/dont-use-static-in-c – Irshad
Und das; http://StackOverflow.com/Questions/12279438/Performance-of-Static-Methods-VS-Instance-Methods – Irshad
_ "Mein ganzes Entwicklungsteam denkt, statische Methoden sind eine schreckliche Sache zu verwenden" _ - ich denke, sie steuern klar nützliche Dinge wie 'String.Compare()' auch? – MickyD