【问题标题】:The "nameof " operator,"expression cannot be used in an argument to nameof"“nameof”运算符,“表达式不能用于 nameof 的参数”
【发布时间】:2015-07-16 02:35:58
【问题描述】:

我有一个简单的课程:

public class Stu
{
    public string Name { get; set; }
}

如果我这样做:

var stu = new Stu();
Console.WriteLine(nameof(stu.Name));

效果很好。 但是这个:

Console.WriteLine(nameof(new Stu().Name));

或者这个:

Console.WriteLine(nameof((new Stu()).Name));

不起作用,编译器告诉我:“表达式不能用于 nameof 的参数”。

不知道为什么。提示是什么意思?运算符“nameof()”的正确参数类型是什么?

我在网上搜索,this 页面告诉我“表达式可能是属性组或方法组”,但表达式“new Stu().Name”不是“属性组”吗?

【问题讨论】:

    标签: c# c#-6.0


    【解决方案1】:

    你可能想要

    nameof(Stu.Name)
    

    nameof() 获得一些特殊语法,因此您不必实例化一个类来获取其属性之一的名称以及其他类似情况。

    【讨论】:

    • Name 不需要是静态的就可以在 nameof 运算符中引用它。它获得了能够解析静态 OR 实例成员的特殊语法
    • nameof 运算符的预期结果在编译过程中被转换为常量字符串。
    猜你喜欢
    • 2020-11-10
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多