Dies ist eine Stilregel unter vielen, und es ist nicht unbedingt die wichtigste Regel aller möglichen Regeln, die Sie in Betracht ziehen könnten. Ihr Beispiel, da es ein int enthält, ist nicht besonders überzeugend, aber Sie könnten sicherlich ein teuer zu konstruierendes Objekt in dieser Schleife haben und vielleicht ein gutes Argument für die Konstruktion des Objekts außerhalb der Schleife. Dies ist jedoch kein gutes Argument gegen diese Regel, da erstens unzählige andere Stellen angewendet werden können, an denen keine teuren Objekte in einer Schleife erstellt werden müssen, und zweitens ein guter Optimierer (und Sie haben sie markiert) C #, damit Sie einen guten Optimierer haben) kann die Initialisierung aus der Schleife heben.
Der wahre Grund für diese Regel ist auch der Grund, warum Sie nicht verstehen, warum es sich um eine Regel handelt. Früher schrieben die Leute Funktionen, die Hunderte oder sogar Tausende von Zeilen lang waren, und sie schrieben sie in Nur-Text-Editoren (Think Notepad) ohne die Unterstützung, die Visual Studio bot. In dieser Umgebung bedeutete das Deklarieren einer Variablen, die Hunderte von Zeilen von ihrem Verwendungsort entfernt war, dass die Person las
if (flag) limit += factor;
Ich hatte nicht viele Hinweise darauf, was Flagge, Limit und Faktor waren. Namenskonventionen wie die ungarische Notation wurden eingeführt, um dies zu unterstützen, ebenso wie Regeln wie die Erklärung von Dingen in der Nähe ihres Verwendungsortes. Natürlich dreht sich heutzutage alles um Refactoring, und Funktionen sind im Allgemeinen weniger als eine Seite lang, was es schwierig macht, einen großen Abstand zwischen dem Ort, an dem Dinge deklariert werden, und dem Ort, an dem sie verwendet werden, zu finden. Sie arbeiten in einem Bereich von 0 bis 20 und streiten darüber, dass in diesem speziellen Fall vielleicht 7 in Ordnung ist, während der Typ, der die Regel aufgestellt hat, es geliebt hätte, 7 Zeilen wegzubekommen und versucht hätte, jemanden von 700 herunterzureden. Und weiter Darüber hinaus können Sie in Visual Studio mit der Maus über alles fahren und dessen Typ anzeigen, ist es eine Mitgliedsvariable und so weiter. Das bedeutet, dass die Notwendigkeit, die Linie zu sehen, die sie deklariert, verringert wird.
Es ist immer noch eine ziemlich gute Regel, eine, die heutzutage ziemlich schwer zu brechen ist und die niemand jemals als Grund für das Schreiben von langsamem Code befürwortet hat. Sei vor allem vernünftig.