A nameof() operátor a C# 6.0-ás verziójában mutatkozott be. Segítségével egy osztály, metódus vagy tulajdonság kódbeli reprezentációját konvertálhatjuk szöveggé.
Tételezzük fel, hogy adott a következő kódrészlet egy metódussal, ami ha null értéket kap szöveg helyett, akkor kivétellel jutalmazza a fejlesztőt:
void metodus(string s)
{
if (s == null)
{
throw new ArgumentNullException("s");
}
}
A probléma itt, hogy az s változó nem túl beszédes, ezért ha a fejlesztő átnevezi, akkor az ArgumentNullException osztály konstruktorának paramétereként átadott szöveg nem feltétlenül kerül átírásra, ami félrevezető hibát tud eredményezni.
Ha a nameof() operátorral kerül lekérésre a név, akkor fordítási hiba fog keletkezni, amikor s változó neve megváltozik, ami azt eredményezi, hogy a kivétel konstruktorában is átírásra kerül a változó és nem keletkezik félrevezető hibaüzenet.
void metodus(string s)
{
if (s == null)
{
throw new ArgumentNullException(nameof(s));
}
}