6.0版具有nameof的新功能,但我无法理解它的用途,因为它仅接受变量名并将其更改为编译时的字符串。

我以为使用<T>可能有一些目的,但是当我尝试使用nameof(T)时,它只是打印出T而不是使用的类型。

有什么目的吗?

最佳答案

如果要重用属性名称,例如在基于属性名称引发异常或处理PropertyChanged事件时,该怎么办?在很多情况下,您都希望使用属性名称。

举个例子:

switch (e.PropertyName)
{
    case nameof(SomeProperty):
    { break; }

    // opposed to
    case "SomeOtherProperty":
    { break; }
}

在第一种情况下,重命名SomeProperty也将更改属性的名称,否则将中断编译。最后一种情况没有。

这是保持代码编译和无错误(排序)的一种非常有用的方法。

(一个very nice article from Eric Lippert为什么infoof没有成功,而nameof却没有成功)

关于c# - nameof的目的是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31695900/

10-11 12:00