Resharper will, dass ich das ändere:
%Vor%... dazu:
%Vor%... aber auf diese Weise (so scheint es zumindest) werden die Variablen N-mal deklariert, einmal für jedes Mal durch die while-Schleife. Ist der Resharperized-Weg wirklich besser als das Original?
Ja, das ist besser, weil Sie den Umfang der deklarierten Variablen einschränken. Es gibt keine Auswirkungen auf die Leistung, wenn Sie sie innerhalb der Schleife deklarieren. Der Grund dafür, dass Resharper diese Änderung vorschlägt, besteht darin, dass Sie sie nicht außerhalb der Schleife verwenden.
Im Allgemeinen ist es eine gute Programmierpraxis, Variablen in einem möglichst engen Rahmen zu deklarieren. Die Gründe dafür sind:
Obwohl es so aussieht, als würden die Variablen bei jeder Iteration über die Schleife neu deklariert, werden sie zur Kompilierzeit deklariert, nicht als Laufzeit. Der Speicherplatz wird für die Variable [s] im Stapelrahmen zugewiesen, und derselbe Speicherplatz wird für jede Iteration über die Schleife wiederverwendet.
Der Compiler optimiert im Allgemeinen solche Ausdrücke und "hebt" die Variablendeklaration außerhalb der Schleife, da die Variable selbst nicht von den Schleifenbedingungen abhängig ist. Dies erzeugt effektiv den Code, den Sie im ersten Beispiel demonstriert haben.
In diesem Fall besteht der Vorschlag von Resharper darin, einige redundante Codezeilen zu entfernen und den vorkompilierten Bereich zu reduzieren.
Tags und Links optimization c# resharper