file(C# 参考)

从 C# 11 开始,file 上下文关键字是类型修饰符。

file 修饰符将顶级类型的范围和可见性限制为声明其的文件。 file 修饰符通常应用于源生成器编写的类型。 文件本地类型为源生成器提供了一种方便的方法,能够避免在生成的类型之间发生名称冲突。 file 修饰符声明文件本地类型,如以下示例所示:

file class HiddenWidget
{
    // implementation
}

嵌套在文件本地类型中的任何类型也仅在声明其的文件中可见。 程序集中的其他类型可以使用与文件本地类型相同的名称。 由于文件本地类型仅在声明其的文件中可见,因此这些类型不会产生命名冲突。

文件本地类型不能是可见性超过 file 范围的任何成员的返回类型或参数类型。 文件本地类型不能是可见性超过 file 范围的类型的字段成员。 但是,可见性更高的类型可能隐式实现文件本地接口类型。 类型还可以显式实现文件本地接口,但显式实现只能在 file 范围内使用。

示例

以下示例演示使用文件本地类型提供辅助角色方法的公共类型。 此外,公共类型还隐式实现文件本地接口:

// In File1.cs:
file interface IWidget
{
    int ProvideAnswer();
}

file class HiddenWidget
{
    public int Work() => 42;
}

public class Widget : IWidget
{
    public int ProvideAnswer()
    {
        var worker = new HiddenWidget();
        return worker.Work();
    }
}

在另一个源文件中,可以声明与文件本地类型具有相同名称的类型。 文件本地类型不可见:

// In File2.cs:
// Doesn't conflict with HiddenWidget
// declared in File1.cs
public class HiddenWidget
{
    public void RunTask()
    {
        // omitted
    }
}

C# 语言规范

有关详细信息,请参阅 C# 语言规范中的声明的辅助功能,以及 C# 11 - 文件本地类型功能规范。

另请参阅