Constructores estaticos

Leyendo sobre este tema me puso a pensar que vale la pena escribir un post para tener presente esta posibilidad muy poco conocida y usada. Resulta ser que al igual que tenemos constructores de instancias, existen constructores estaticos que inicializan las variables estaticas, su sintaxis como es de esperarse inicia con la palabra static y el nombre de la clase, solo es posible crear un solo constructor estatico debido a que este no es llamado explicitamente. Pensando en los escenarios en que se podria utilizar son muy limitados, quizas solo en los cuales forzosamente necesitemos un estado inicial de sus miembros estaticos.

Por ultimo hay que remarcar las consecuencias del uso de estos constructores estaticos, reduce velocidad debido a que el CLR no puede asignar memoria a los miembros estaticos cuando crea conveniente, existe un ligero cambio en la cabecera de la clase en el codigo intermedio(beforefieldinit).