construtores estáticos e BeforeFieldInit?
Se um tipo não tiver nenhum construtor estático, os inicializadores de campo serão executados imediatamente antes do tipo que está sendo usado - ou a qualquer momento antes, no capricho do tempo de execução.
Por que esse código:
void Main()
{
"-------start-------".Dump();
Test.EchoAndReturn("Hello");
"-------end-------".Dump();
}
class Test
{
public static string x = EchoAndReturn ("a");
public static string y = EchoAndReturn ("b");
public static string EchoAndReturn (string s)
{
Console.WriteLine (s);
return s;
}
}
rendimentos :
-------start-------
a
b
Hello
-------end-------
enquanto esse código:
void Main()
{
"-------start-------".Dump();
var test=Test.x;
"-------end-------".Dump();
}
rendimentos
a
b
-------start-------
-------end-------
A ordem dea
eb
é entendido. mas por que lidar comstatic method
édiferente do questatic field
.
Quero dizer porque ocomeçar efim linhas estão em locais diferentes com métodos estáticos versus campos estáticos? Quero dizer - em ambas as situações ele tem que inicializar esses campos ... então por quê?
(Eu sei que posso adicionar o driver estático que faz com que seja o mesmo - mas estou perguntando sobre essa situação em particular.)
(p.s. Dump () é como console.write)