Si un tipo no tiene constructor estático, inicializadores de campo se ejecutarán justo antes de que el tipo de ser utiliza- o en cualquier momento anterior a capricho de el tiempo de ejecuciónconstructores estáticos y BeforeFieldInit?
¿Por qué este 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;
}
}
rendimientos:
-------start-------
a
b
Hello
-------end-------
mientras que este código:
void Main()
{
"-------start-------".Dump();
var test=Test.x;
"-------end-------".Dump();
}
produce
a
b
-------start-------
-------end-------
El orden de a
y b
se entiende. pero ¿por qué lidiar con static method
es diferente que static field
.
me refiero a por qué el inicio y final líneas están en diferentes ubicaciones con métodos estáticos frente a campos estáticos? Quiero decir, en ambas situaciones él tiene que inicializar esos campos ... ¿por qué?
(Sé que puedo añadir ctor estática que hacen que sea la misma -., Pero estoy preguntando por esta situación particular)
(ps Dump() es igual Console.Write)
debería tener en cuenta que si me desplazo sobre sus preguntas, puedo crear una buena base para la RRHH Reclutamiento :) – Tigran
@Tigran Sí. Lo sé. Siempre me gustan las preguntas de borde. No me preguntes por qué. (Puede estar seguro de que no estoy tratando con este tipo de cosas en mi trabajo). :-) –
¿Estás en depuración o versión? el comportamiento puede ser diferente –