C# nameof

Опишите пожалуйста особенности оператора nameof. Где его можно использовать?

С введением оператора nameof теперь возможно избегать сложно закодированых строчек в коде. Оператор nameof принимает имя элементов кода и возвращает строчный литерал этого элемента. Параметры, которые принимает оператор nameof, включают имя класса и всех его членов, таких как: методы, переменные и константы.

Довольно удобно использовать строчные литералы, чтобы бросить ArgumentNullException (назвать аргумент винованым) и вызвать события PropertyChanged (чтоб назвать измененное свойство), но велика вероятность появления ошибки, потому что можно неправильно их записать или не восстановить после рефакторинга.

Выражения оператора nameof являются особым видом строчного литерала, где компилятор проверяет, есть ли у Вас что-то с заданным именем и Visual Studio знает, куда он ссылается, поэтому навигация и рефакторинг будут работать легко. Оператор nameof может быть полезным для разных сценариев, таких как INotifyPropertyChanged, ArgumentNullException и отображения.