名称如何工作?

时间:2016-09-10 14:33:44

标签: c# c#-6.0

我只是想知道来自C#6的名称如何才能访问非静态属性,就像它是静态的一样。这是一个例子

www

2 个答案:

答案 0 :(得分:9)

它不是"访问"属性 - 该运算符纯粹是一种编译器机制,用于注入" name"代码中的参数。在这种情况下,它会将nameof(TestClass.Name)替换为"Name"。事实上,它的非静态是无关紧要的。

答案 1 :(得分:5)

nameof口译员在compiletime得到解决,转而转换为static string。 在您的情况nameof(TestClass.Name)中,您只会将"Name"作为字符串返回 您必须使用nameof(TestClass) 使用nameof,您可以最大限度地减少代码中的冗余(例如:您不必使用nameof为属性名或类似内容定义字符串。

您还可以使用它来表示类名。但要注意! nameof(MyClass)
如果你有一个派生类,可能与在运行时不一样! 出于运行时的目的,请改为使用typeOf.GetType()

MSDN

了解详情