C# 中nameof的使用

C#中,nameof是一个上下文关键字,它用于获取变量、类型或成员的名称(作为字符串)。这对于反射、日志记录、异常消息和其他需要引用变量或类型名称的字符串表示形式的场景特别有用。

以下是nameof的一些基本用法:

  1. 获取变量的名称
string myVariable = "Hello, world!";
string variableName = nameof(myVariable); // variableName 现在是 "myVariable"
  1. 获取属性的名称
public class MyClass
{
    public string MyProperty { get; set; }
}

MyClass obj = new MyClass();
string propertyName = nameof(obj.MyProperty); // propertyName 现在是 "MyProperty"
  1. 获取类型的名称
string typeName = nameof(MyClass); // typeName 现在是 "MyClass"
  1. 获取方法的名称(注意:你不能直接在方法内部使用nameof来获取该方法的名称,但你可以获取传递给nameof的参数的名称或类型的名称):
public void MyMethod()
{
    string methodName = nameof(MyMethod); // 这会导致编译错误,因为MyMethod不是一个变量、类型或成员

    // 但是,你可以这样做:
    Action action = MyMethod;
    string delegateName = nameof(action); // delegateName 现在是 "action",而不是 "MyMethod"
}
  1. 使用泛型
public void GenericMethod<T>()
{
    string typeName = nameof(T); // typeName 是 "T",但通常你希望获取T的实际类型的名称,这需要使用反射
}

注意:虽然nameof(T)在上面的例子中返回了"T",但如果你想知道泛型类型T的实际名称(例如intstring等),你需要使用反射来获取这些信息。

nameof的主要优点是它是类型安全的,并且可以在编译时检查其参数。此外,由于它是编译时常量,因此在使用时不会引入任何运行时开销。

  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值