Nameof Expressions 故名思义就是取得名字的表达式。
先看例子:
以前的写法:
新的写法:
透过这种方式,就不需要写死 "bar" 字符串。当我们重命名 bar 时,程式也能正常的反应正确的名称。
Nameof 可以用於取得:类名、方法名、参数名、属性(Attribute)名。
例子如下:
另一个比较实用的情境如下:
使用 nameof(Foo) 代替字符串 "Foo";
先看例子:
以前的写法:
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";