No; il compilatore codifica direttamente il nome membro direttamente durante la compilazione. In termini di IL, questo è ldstr
. Per esempio, se si compila:
static void Implicit()
{
Log();
}
static void Explicit()
{
Log("Explicit");
}
static void Log([CallerMemberNameAttribute] string name = null)
{}
otteniamo:
.method private hidebysig static void Implicit() cil managed
{
.maxstack 8
L_0000: ldstr "Implicit"
L_0005: call void Program::Log(string)
L_000a: ret
}
.method private hidebysig static void Explicit() cil managed
{
.maxstack 8
L_0000: ldstr "Explicit"
L_0005: call void Program::Log(string)
L_000a: ret
}
Come si può vedere - l'IL è il nome cotto in diretta esattamente lo stesso come se mettiamo una stringa in manualmente.
fonte
2013-04-17 06:40:21
Quali sono stati i tuoi risultati quando hai testato il potenziale impatto sul rendimento? –