Является ли «текстовый порядок» между частичными классами формально определенным?

В частности, в отношении инициализаторов полей (в данном случае статических) - §17.11 в ECMA 334:

Если класс содержит какие-либо статические поля с инициализаторами, эти инициализаторы выполняются в текстовом порядке непосредственно перед выполнением статического конструктора.

Теперь, если у нас есть несколькоpartial классы в отдельных файлах, этот порядок определяется где-нибудь? Моя интуиция говорит: «Не определен формально, но, вероятно, относится к порядку, включенному в csproj, или к порядку, указанному для csc» Это верно?

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

Например, если у меня естьa.cs:

using System;
partial class Program
{
    private static int Foo = Write("Foo");
    static int Write(string name)
    {
        Console.WriteLine(name);
        return 0;
    }
    static void Main()
    {
        Console.WriteLine("[press any key]");
        Console.ReadLine();
    }
}

а такжеb.cs:

partial class Program
{
    private static int Bar = Write("Bar");
}

а также:

<Compile Include="a.cs" />
<Compile Include="b.cs" />

тогда этоFoo тогдаBar; если, однако, это:

<Compile Include="b.cs" />
<Compile Include="a.cs" />

тогда этоBar тогдаFoo, Этотопоры наблюдение, но не утверждает это сильно. §8.7.13 (Частичные объявления типов) не комментирует порядок при объединенииpartial классы. Так; Есть ли что-нибудь более сильное, что мы можем здесь сказать, из спецификации языка C # или из инструментальной документации?

Кроме того, он ведет себя аналогичноcsc a.cs b.cs противcsc b.cs a.cs.

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

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