Gibt es einen Vorteil, eine lokale Variable als "const" zu deklarieren, wenn ich weiß, dass ich ihren Wert nicht ändern werde?
Danke,
Sie würden normalerweise eine Konstante für Ihre gesamte Lösung verwenden. Aber die Vorteile für die Verwendung in einem lokalen Bereich wären, dass Sie einen anderen Ort in Ihrem Bereich kennen, den Sie nicht ändern werden. Und auch wenn jemand anders an diesem Code arbeitet, wird er es auch nicht ändern. Dies macht Ihr Programm wartbarer, weil Sie nur die Konstante beibehalten müssen (auch wenn es nur in einem lokalen Bereich ist)
Wenn die Variable const deklariert wird, kann der Compiler auch Optimierungen vornehmen. Anstatt beispielsweise einen int auf dem Stack zuzuordnen und seinen Wert dort zu platzieren, kann der Compiler den Wert direkt mit Ihrem Code verwenden.
dh Folgendes:
%Vor%Könnte als
kompiliert werden %Vor%vom Compiler
Bearbeiten: Antworten Sie auf "konstante Propagierung", da das Kommentarfeld eine Größenbeschränkung hat
Verwenden Sie ildasm, um zwischen const und none const für die Freigabe mit Optimierung zu überprüfen:
Der Code
%Vor%Kompiliert zu
%Vor%Während
%Vor%wird auf
optimiert %Vor%Dies verwendet 2010 in Release mit Optimierungen.
Ich habe eine Suche durchgeführt, um mehr über die konstante Propagierung zu erfahren, und wenn es möglich ist, macht der aktuelle Compiler das nicht wie erwähnt hier
Ja. Sie schützen Ihren Code davor, diese Variable versehentlich zu ändern.
Ich mache das gerne, wenn ich einen booleschen Flag-Indikator an eine Methode übergebe:
%Vor%Dies ist für mich besser lesbar als ein einfaches Wahr / Falsch, das das Lesen der Methodendeklaration erfordert, um die Bedeutung zu bestimmen.
Wenn Sie local als const deklarieren, kann der Compiler Ihre Absicht kennen, so dass Sie den Wert Ihrer Variablen nicht anderswo in Ihrer Funktion ändern können.
Neben den gültigen Antworten teilen Sie dem Compiler nicht nur mit, dass sich der Wert nicht ändern wird, sondern Sie sagen schnell jedem anderen, der sich Ihren Code ansieht.
Je nach Anwendungsfall ..
Zum Beispiel
%Vor%in diesem Fall denke ich, const Erklärung ist bedeutungslos