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));
}
}