Este código tiene el comportamiento bien definido en C# de no trabajar:¿Por qué en C# el pedido es importante para la inicialización estática?
class Foo
{
static List<int> to = new List<int>(from); // from is still null
static IEnumerable<int> from = Something();
}
Nota: No estoy pidiendo cómo solucionar ese código como I already known how to do that
Cuál es la justificación para esto? C# ya realiza comprobaciones de tiempo de ejecución para detectar el primer acceso a miembros estáticos. ¿Por qué no extender esto a cada miembro y hacer que se ejecuten a pedido o incluso mejor que el compilador resuelva el pedido en tiempo de compilación?
BTW: Creo que la misma pregunta (o casi igual) también se aplica a los miembros no estáticos.
Creo que te respondes diciendo que es un "comportamiento bien definido". – mayu