<p>nameof运算符在C# 6.0中引入,用于编译时获取符号名称字符串,如nameof(Console)得"Console"、nameof(Person.Name)得"Name",常用于异常参数验证、INotifyPropertyChanged和日志记录,避免硬编码字符串,支持重构且无性能开销。</p>

nameof 表达式是 C# 6.0 引入的一个编译时运算符,用于获取变量、字段、属性、方法、类等程序元素的名称作为字符串。它能有效避免在代码中使用硬编码字符串,提高代码的可维护性和重构安全性。
nameof 返回指定符号的未限定名称(即不包含命名空间或类型前缀):
string name = nameof(Console); // 结果: "Console"
string method = nameof(Console.WriteLine); // 结果: "WriteLine"
string property = nameof(Person.Name); // 结果: "Name"
string parameter = nameof(value); // 在方法内使用参数名
nameof 不会触发运行时求值,它在编译期间就被替换为对应的字符串字面量,因此没有性能开销。
在以下情况中,使用 nameof 可防止因重命名导致的错误:
public void SetName(string name)
{
if (name == null)
throw new ArgumentNullException(nameof(name));
}
public string FirstName
{
get => _firstName;
set
{
_firstName = value;
OnPropertyChanged(nameof(FirstName));
}
}
void ProcessOrder(Order order)
{
_logger.LogDebug("Entering {Method}", nameof(ProcessOrder));
// ...
}
优点:
注意点:
基本上就这些。nameof 是提升 C# 代码质量的小而有力的工具,尤其适合替代那些容易出错的“魔法字符串”。
以上就是C#的nameof表达式是什么?如何避免在代码中使用硬编码的字符串?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号