Hardcoded property names break on refactoring. nameof() generates string from code symbol safely.
❌ Magic String (Breaks on Rename):
public class User
{
public string Name { get; set; }
}
// Later in code:
if (propertyName == "Name") // Typo-prone, breaks if User.Name renamed!
✅ nameof (Refactor-Safe):
if (propertyName == nameof(User.Name)) // Compile-time checked! // If User.Name renamed, this automatically updates!
Use Cases: INotifyPropertyChanged, exception messages, logging, validation
throw new ArgumentNullException(nameof(user));
_logger.LogInfo($"{nameof(SaveUser)} called");
