nameof ist eine richtig hilfreiche Sache um all diese magischen Strings aus dem Sourcecode raus zu bekommen. Gerade zu WPF-Zeiten waren entsprechende Workarounds besonders in Zusammenhang mit INotifyPropertyChanged etc. gefragt. Hier ein solches Beispiel:

public class Person : INotifyPropertyChanged
{
    private string firstName;

    public string FirstName
    {
        get { return firstName; }
        set
        {
            firstName = value;
            NotifyPropertyChanged("FirstName");
        }
    }

    protected void NotifyPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this,
                new PropertyChangedEventArgs(propertyName));
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

Der Nachteil besteht nun darin, dass bei einer Änderung der Property auch der String entsprechend geändert werden muss, damit die Funktionalität erhalten bleibt. Dies ist zwar in diesem Beispiel einfach zu finden, geht aber schon einmal unter.

NotifyPropertyChanged("FirstName"); kann nun wie folgt verbessert werden:

NotifyPropertyChanged(nameof(FirstName);

Dadurch werden Umbenennungen auch hierfür durchgeführt.

Besonders interessant ist nameof auch bei der Verwendung der ArgumentNullException bzw. der ArgumentOutOfRangeException.

Zu beachten ist, dass nameof nur den eigentlichen Namen der Klasse, Methode oder Eigenschaft zurückliefert. Namespaces und übergeordnete Typnamen bleiben außen vor.

Viel Spaß!

Viele weitere Neuerungen finden sich in der C# 6 Serie.

Über den Autor

Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler und Fotograf. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.

2 Kommentare

Cookie-Einstellungen
Auf dieser Website werden Cookie verwendet. Diese werden für den Betrieb der Website benötigt oder helfen uns dabei, die Website zu verbessern.
Alle Cookies zulassen
Auswahl speichern
Individuelle Einstellungen
Individuelle Einstellungen
Dies ist eine Übersicht aller Cookies, die auf der Website verwendet werden. Sie haben die Möglichkeit, individuelle Cookie-Einstellungen vorzunehmen. Geben Sie einzelnen Cookies oder ganzen Gruppen Ihre Einwilligung. Essentielle Cookies lassen sich nicht deaktivieren.
Speichern
Abbrechen
Essenziell (1)
Essenzielle Cookies werden für die grundlegende Funktionalität der Website benötigt.
Cookies anzeigen