C# 6.0 (C# vNext) 新功能之:Nameof Expressions

Nameof Expressions 故名思义就是取得名字的表达式。
先看例子:

以前的写法:
void Foo(Bar bar)
{
    if (bar == null)
    {
        throw new ArgumentNullException("bar");
    }
}

新的写法:
void Foo(Bar bar)
{
    if (bar == null)
    {
        throw new ArgumentNullException(nameof(bar));
    }
}

透过这种方式,就不需要写死 "bar" 字符串。当我们重命名 bar 时,程式也能正常的反应正确的名称。

Nameof 可以用於取得:类名、方法名、参数名、属性(Attribute)名。
例子如下:

public class MyClass
{
    [TestMethod]
    public static void Show(int age)
    {
        Console.WriteLine(nameof(MyClass)); // 输出 MyClass 类名
	Console.WriteLine(nameof(Show)); // 输出 Show 方法名
	Console.WriteLine(nameof(age)); // 输出 age
	Console.WriteLine(nameof(TestMethodAttribute)) // 输出 Attribute 名
    }
}

另一个比较实用的情境如下:
class Bar : INotifyPropertyChanged
{
    private int foo;


    public int Foo
    {
        get { return foo; }
        set
        {
            foo = value;
            PropertyChanged(this, new PropertyChangedEventArgs(nameof(Foo));
        }
    }


    public event PropertyChangedEventHandler PropertyChanged;
}

使用 nameof(Foo) 代替字符串 "Foo";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值