版本6.0增加了nameof
的新特性,但我不能理解它的用途,因为它只接受变量名并在编译时将其更改为字符串.
我想它在使用<T>
时可能会有一些用途,但当我try 使用nameof(T)
时,它只会打印T
,而不是使用的类型.
你知道目的吗?
版本6.0增加了nameof
的新特性,但我不能理解它的用途,因为它只接受变量名并在编译时将其更改为字符串.
我想它在使用<T>
时可能会有一些用途,但当我try 使用nameof(T)
时,它只会打印T
,而不是使用的类型.
你知道目的吗?
如果希望重用属性名称,例如在基于属性名称引发异常或处理PropertyChanged
个事件时,情况会如何.在很多情况下,你都想知道房产的名称.
举个例子:
switch (e.PropertyName)
{
case nameof(SomeProperty):
{ break; }
// opposed to
case "SomeOtherProperty":
{ break; }
}
在第一种情况下,如果不同时更改属性定义和nameof(SomeProperty)
表达式,重命名SomeProperty
将导致编译错误.在第二种情况下,重命名SomeOtherProperty
或更改"SomeOtherProperty"
字符串将导致运行时行为silent中断,在生成时不会出现错误或警告.
这是一种非常有用的方法,可以保持代码编译和无bug(类似).
(A very nice article from Eric Lippert为什么infoof
没有成功,而nameof
成功)