nameof () Operator für die statische Zeichenfolge

8

Ich verstehe die Verwendung des nameof() -Operators für die Ausnahmebehandlung, die Protokollierung usw. Aber ich verstehe das untenstehende Beispiel nicht direkt aus irgendeinem Microsoft-Code.

%Vor%

Wie ist das nützlicher als

? %Vor%     
Brian Kraemer 21.04.2016, 19:45
quelle

2 Antworten

15

nameof ist ein Operator, der zur Kompilierzeit ausgewertet wird. Wenn Ihre Anwendung kompiliert wurde, gibt es also keinen Unterschied zwischen diesen beiden Lösungen.

Die Verwendung von nameof hat in diesem Fall jedoch einige Vorteile:

  • Es macht den Stringwert weniger "magisch". Anstatt also eine getrennte magische Kette zu sein, ist die semantische Begründung für diesen Wert sehr klar: Es ist der Name der Variablen selbst.
  • Der Name ist eine tatsächliche Referenz auf den Namen, also sind beide verbunden. Auf diese Weise können Sie einen der beiden umstrukturieren und den anderen automatisch beeinflussen. Es bewirkt auch, dass "string" als Referenz erscheint, wenn Referenzen auf diese Variable nachgeschlagen werden. So wissen Sie genau, wo es verwendet wurde.
poke 21.04.2016, 19:55
quelle
6

Ganz einfach: Das erste Beispiel leitet den zugewiesenen Wert vom Namen der referenzierten Variablen ab, während der zweite den Wert von einer beliebigen Zeichenfolge ableitet, die mit dem Variablennamen übereinstimmen kann oder nicht.

Wenn Sie also den Namen der Variablen umformulieren, wird der Wert, der diesen Variablen zugeordnet ist, automatisch im ersten Beispiel aktualisiert, während Sie sicherstellen müssen, dass Sie den Zeichenfolgenwert auch in der Tabelle aktualisiert haben zweites Beispiel.

Es ist erwähnenswert, dass beide unter der Haube auf die gleiche IL kompilieren und den Wert eines statischen Feldes auf den Auswertungsstapel schieben (per LinqPad):

%Vor%     
David L 21.04.2016 19:47
quelle

Tags und Links