22 Stimmen

Warum schlägt resharper die Verwendung von readonly in Feldern vor, die nicht geändert werden?

Um die Frage zu klären, möchte ich hinzufügen, dass ich nicht frage, warum ich readonly über const wählen sollte oder was die Vorteile von readonly über const sind.

Ich frage mich, warum man ein Feld schreibgeschützt machen sollte, nur weil es (derzeit) nicht geändert wird.

zum Beispiel: Wenn ich die folgende Klasse schreiben würde:

public class MyClass
{
      public int _i = 5;

      // Code that doesn't change the value of i:
      ...
}

Resharper zeigt an, dass die Datei schreibgeschützt werden kann.

Danke

0voto

banshee Punkte 741

Wenn wir readonly und const in einer kompilierten DLL (nennen wir sie "Quell-DL") verwenden, die von einer anderen kompilierten DLL (nennen wir sie "Kunden-DL") verwendet wird, dann müssen wir bei einer Änderung von const in der Quell-DL nicht nur die Quell-DL, sondern auch die Kunden-DL kompilieren, da const während der Kompilierung gesetzt wird. Wenn wir also diesen Wert in der Quell-DLL ändern, müssen wir nur die Quell-DLL kompilieren, ohne die Client-DLL zu kompilieren. Ich denke, dass dies einer der Gründe ist, warum Resharper readonly vorschlägt - weil es weniger Arbeit erfordert, wenn es geändert wird. Der zweite Grund ist, denke ich, was Saulius Valatka schrieb, dass const ein echter "konstanter" Wert sein sollte, wie z.B. 60 Minuten in einer Stunde und nicht ein Wert, der scheinbar konstant ist, sich aber irgendwann ändern wird. Es gibt also weniger echte "konstante" Werte als solche, von denen wir denken, dass sie "konstant" sind, die sich aber schließlich ändern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X