Can C# nameof operator reference instance property without instance?

In the past, the documentation explicitly explained this, reading in part:

In the examples you see that you can use a type name and access an instance method name. You do not need to have an instance of the type[emphasis mine]

This has been omitted in the current documentation. However, the examples still make this clear. Code samples such as Console.WriteLine(nameof(List<int>.Count)); // output: Count and Console.WriteLine(nameof(List<int>.Add)); // output: Add show how to use nameof to obtain the string value with the name of an instance member of a class.

I.e. you should be able to write nameof(ClientService.EndDate) and have it work, contrary to your observation in the question that this would be "not normally syntactically valid".

If you are having trouble with the syntax, please provide a good Minimal, Complete, and Verifiable code example that reliably reproduces whatever error you're getting, and provide the exact text of the error message.


Great answer by @Peter Duniho.

In case of name clashes, you can also do the following:

ClientService clientservice;
var str = nameof(clientservice.EndDate);

Not efficient, but curious enough.

Tags:

C#

C# 6.0

Nameof