2015-07-16 7 views
5

ho ottenuto una semplice classe:L'operatore "nameof", "espressione non può essere utilizzato in una discussione a nameof"

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

Se faccio così:

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

funziona bene. ma questo:

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

o questo:

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

non funziona, il compilatore mi dice: "L'espressione non può essere utilizzato in un argomento per nameof".

Non so perché. Che cosa significa la punta? Qual è il tipo di parametro corret dell'operatore "nameof()"?

Ho cercato sul Web, la pagina this mi dice che "l'espressione può essere un gruppo di proprietà o un gruppo di metodi", ma l'espressione "nuovo Stu(). Nome" non è un "gruppo di proprietà"?

risposta

12

probabilmente avrete bisogno

nameof(Stu.Name) 

nameof() ottiene qualche sintassi speciale in modo da non dover istanziare una classe per ottenere il nome di una delle sue proprietà, e altri scenari simili.

+4

'Nome' non ha bisogno di essere statico per riferirsi ad esso all'interno dell'operatore' nameof'. Ottiene una sintassi speciale per essere in grado di risolvere i membri dell'istanza OR statici –

+0

Il risultato previsto dell'operatore 'nameof' viene trasformato in una stringa costante durante la compilazione. –

Problemi correlati