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 - 文件本地类型功能规范。