C# partial 类: 非静态字段初始化是否在构造函数之前执行?

C# partial classes: are non-static field initializations across executed before the constructor?

类似问题的许多答案似乎总是关于静态 classes。这是关于实例字段的。

假设我有这个

// File.cs
public partial class Stuff 
{
    public Stuff()
    {
        obj.DoSomething();
    }
}

// OtherFile.cs
public partial class Stuff 
{
    MyObject obj = new MyObject("test");
}

这能保证安全吗?好像不会,比如说字段初始化和运行构造函数在一个class,然后在另一部分做字段初始化?

C# 语言是否保证这始终是安全的?

注:Is the "textual order" across partial classes formally defined?不回答问题。当前问题的答案给出了不属于此类问题的答案。它不应 link 作为此特定 link 的副本编辑。

是的,因为部分class仍然被编译成一个class。 partial 语法功能只允许您将 class 的定义拆分为多个文件。就编译类型而言,没有“部分”。

所以关于静态和非静态构造函数、初始化器等的所有顺序仍然有效。