Sollte ich versuchen, const String anstelle von String zu verwenden, wo immer möglich?

StackOverflow https://stackoverflow.com/questions/19846309

  •  29-07-2022
  •  | 
  •  

Frage

Betrachten Sie diese drei Beispiele:

Beispiel a

string message = "Hello world!";
throw new System.Exception(message);

Beispiel b

const string message = "Hello world!";
throw new System.Exception(message);

Beispiel c

throw new System.Exception("Hello world!");

Gibt es einen Grund, einen über die anderen zu verwenden? Sollte ich nicht versuchen, die Const -String nach Möglichkeit zu verwenden (vorausgesetzt, die Zeichenfolge wird nie geändert), und daher ist Beispiel B am besten? Was passiert in Beispiel c?

Ich denke, ich frage, ob die von den oben genannten IL emittierten IL identisch oder unterschiedlich sind und ob es einen Unterschied gibt. Ich erkenne, dass der Unterschied klein sein wird und wahrscheinlich nichts, worüber man sich Sorgen machen muss; Ich denke, das macht dies zu einer akademischen Frage.


Bearbeiten. Hier ist das IL

IL_0014: ldstr "This is a string"
IL_0019: stloc.0
IL_001a: ldloc.0
IL_001b: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_0020: throw


IL_0033: nop
IL_0034: ldstr "This is a const string"
IL_0039: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_003e: throw

IL_0051: nop
IL_0052: ldstr "This is an inline string."
IL_0057: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_005c: throw

Sieht im Wesentlichen identisch mit mir.

War es hilfreich?

Lösung 2

Es gibt keinen Unterschied in Bezug auf Leistung, Speichergebrauch oder Effizienz der String -Tabelle.

Der einzige Effekt des CONT-Schlüsselworts besteht darin, einen Kompilierungszeitfehler zu generieren, wenn die Zeichenfolge neu zugewiesen wird. Daher ist es hilfreich, const hinzuzufügen, um Ihre Absicht anderen Entwicklern mitzuteilen.

Andere Tipps

Hängt wirklich vom Kontext ab. Wird sich diese Nachricht jemals ändern? Wenn Sie Option A verwenden, haben Sie die Möglichkeit, den Wert der String -Nachricht zu ändern, wobei die anderen beiden eine hart codierte Zeichenfolge drucken - was in Ordnung ist, wenn sie immer genau das sagen wird

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top