6.0版本新增了一个功能nameof
,但我无法理解它的目的,因为它只是获取变量名称并在编译时将其更改为字符串。
我认为它在使用时可能有一些目的<T>
但当我尝试nameof(T)
它只是打印给我一个T
而不是使用的类型。
对目的有什么想法吗?
如果您想要重用属性名称,例如根据属性名称引发异常或处理PropertyChanged
事件。在很多情况下,您都希望获得财产的名称。
举个例子:
switch (e.PropertyName)
{
case nameof(SomeProperty):
{ break; }
// opposed to
case "SomeOtherProperty":
{ break; }
}
第一种情况,重命名SomeProperty
如果您不更改属性定义和nameof(SomeProperty)
表达。对于第二种情况,重命名SomeOtherProperty
或改变"SomeOtherProperty"
string 将导致运行时行为悄无声息地破坏,在构建时不会出现错误或警告。
这是保持代码编译和无错误(某种程度)的非常有用的方法。
(A 埃里克·利珀特的非常好的文章 why infoof
没成功,同时nameof
did)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)