nameof 是 C# 6.0 引入的编译时运算符,将标识符转换为字符串字面量,支持重构、避免拼写错误,适用于变量、属性、方法、类型等,但不支持表达式或动态名称。

nameof 是 C# 6.0 引入的编译时运算符,它不执行任何运行时操作,只在编译期将标识符(如变量名、方法名、属性名、类型名等)转换为对应的字符串字面量。它安全、高效,且支持重构 —— 重命名时自动同步,不会出现“魔法字符串”问题。
传统写法容易出错:
if (value == null) throw new ArgumentNullException("valu"); // 拼错!用 nameof 后,拼写由编译器保障:
if (value == null) throw new ArgumentNullException(nameof(value));IDE 重命名 value 变量时,nameof(value) 会自动更新,不会遗漏。
nameof 可作用于:
nameof(input)
nameof(User.Name)(返回 "Name")nameof(ToString)、nameof(GetUserById)
nameof(string) → "String",nameof(List<int>)</int> → "List`1"nameof(MyNamespace.MyClass.MyProperty) → "MyProperty"(只取最后一段)注意:不能用于表达式或字符串拼接,例如 nameof(x + y) 或 nameof("abc") 都会编译失败。
常见模式示例:
Guard.Against.Null(user, nameof(user))
logger.LogWarning("Failed to process {PropertyName}", nameof(Config.TimeoutMs))
OnPropertyChanged(nameof(FirstName))(比 "FirstName" 更安全)nameof(AppSettings.DatabaseUrl) 对应的配置键几个实用细节:
nameof(obj.Property) 和 nameof(Property) 结果相同nameof(List<string>)</string> 返回 "List`1",不是 "Listconst string 初始化:private const string NameKey = nameof(User.Name);(编译期确定)基本上就这些。用好 nameof,代码更健壮,重构更安心。
以上就是C#如何使用nameof表达式 C# nameof运算符使用技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号