Training - Beratung - Projektarbeiten

www.David-Tielke.de

Webcast C# 6.0 - Folge 7: nameof() Operator

Kleine Veränderungen können manchmal großes Bewirken. Auf kaum eine Erweiterung trifft diese Aussage mehr zu, als auf den neuen nameof Operator. Musste man in der Vergangenheit an bestimmten stellen den Namen eines Members einer Klasse oder Methode angeben, z.B. beim Logging oder dem Auslösen einer ArgumentException, so musste dieser Name als string angegeben werden. Wurde der Parameter später während eines Refactorings umbenannt, wurde dies oft beim übergebenen string nicht gemacht. Und so schlichen sich Fehler ein, die weder beim kompilieren noch noch während dem Betrieb aufgefallen sind, sondern an der Stelle, an der man sie am dringendsten Benötigte: Beim debuggen nach Fehlerzuständen. Dies ist nur ein Beispiel, bei dem der neue nameof Operator hilfreich sein kann. Für mich definitiv der heimliche Star von C# 6.0.

Dazu von der Project Roslyn Webseite

Occasionally you need to provide a string that names some program element: when throwing an ArgumentNullException you want to name the guilty argument; when raising a PropertyChanged event you want to name the property that changed, etc. Using string literals for this purpose is simple, but error prone. You may spell it wrong, or a refactoring may leave it stale. nameof expressions are essentially a fancy kind of string literal where the compiler checks that you have something of the given name, and Visual Studio knows what it refers to, so navigation and refactoring will work:
if (x == null) throw new ArgumentNullException(nameof(x));
You can put more elaborate dotted names in a nameof expression, but that’s just to tell the compiler where to look: only the final identifier will be used:
WriteLine(nameof(person.Address.ZipCode)); // prints "ZipCode"

Links:

Kommentar schreiben

Loading