"nameof"运算符,"表达式不能用于名称的参数"

efo*_*ina 8 c# c#-6.0

我有一个简单的课:

public class Stu
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我喜欢这样:

var stu = new Stu();
Console.WriteLine(nameof(stu.Name));
Run Code Online (Sandbox Code Playgroud)

它运作良好.但是这个:

Console.WriteLine(nameof(new Stu().Name));
Run Code Online (Sandbox Code Playgroud)

或这个:

Console.WriteLine(nameof((new Stu()).Name));
Run Code Online (Sandbox Code Playgroud)

不起作用,编译告诉我:"表达不能用于名称的论证".

我不知道为什么.提示意味着什么?运营商"nameof()"的corret参数类型是什么?

我搜索了网页,这个页面告诉我"表达式可能是属性组或方法组",但是表达式是"new Stu().Name"而不是"property-group"?

Nic*_*pat 14

你可能想要

nameof(Stu.Name)
Run Code Online (Sandbox Code Playgroud)

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

  • 在`nameof`运算符中,`Name`不需要是静态的来引用它.它具有特殊的语法,可以解析静态OR实例成员 (4认同)