Порядок статических конструкторов / инициализаторов в C #

Работая над приложением C #, я только что заметил, что в некоторых местах статические инициализаторы имеют зависимости друг от друга, например:

static private List a = new List() { 0 };
static private List b = new List() { a[0] };

Не делая ничего особенного, что работало. Это просто удача? Есть ли в C # правила для решения этой проблемы?

Редактировать: (re: Panos) В файле лексический порядок кажется королем? как насчет файлов?

В поиске я попробовал циклическую зависимость, например, такую:

static private List a = new List() { b[0] };
static private List b = new List() { a[0] };

и программа нене запустить то же самое (тестовый костюм не прошел через доску, и я несмотреть дальше).

Ответы на вопрос(4)

Ваш ответ на вопрос