Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Modifieraren file begränsar en toppnivåtyps synlighet till filen som innehåller deklarationen. Den file modifieraren tillämpas oftast på typer som skrivs av en källgenerator. Fillokala typer ger källgeneratorer ett bekvämt sätt att undvika namnkollisioner mellan genererade typer.
file-modifikatorn deklarerar en fil-lokal typ, som i det här exemplet:
file class HiddenWidget
{
// implementation
}
Alla typer som är kapslade i en fillokal typ visas också bara i filen som innehåller deklarationen. Andra typer i en assembly kan använda samma namn som en fil-lokal typ. Eftersom den fillokala typen endast visas i filen som innehåller deklarationen skapar dessa typer inte en namngivningskollision.
En fillokal typ kan inte vara returtyp eller parametertyp för en medlem som deklarerats i en icke-fillokal typ. En fil-lokal typ kan inte vara en fältmedlem i en icke-fil-lokal. En mer synlig typ kan dock implicit implementera en fillokal gränssnittstyp. Typen kan också uttryckligen implementera ett fil-lokalt gränssnitt, men explicita implementeringar kan bara användas i den samma filen.
I följande exempel visas en offentlig typ som använder en filspecifik typ för att erbjuda en arbetarmetod. Dessutom implementerar den publika typen ett fillokalt gränssnitt implicit:
// 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();
}
}
I en annan källfil kan du deklarera typer som har samma namn som de fillokala typerna. De fil-lokala typerna är inte synliga.
// In File2.cs:
// Doesn't conflict with HiddenWidget
// declared in File1.cs
public class HiddenWidget
{
public void RunTask()
{
// omitted
}
}
Medlemssökning föredrar en fillokal typ som deklarerats i samma fil framför en icke-fillokal typ som deklarerats i en annan fil. Den här regeln säkerställer att en källgenerator kan förlita sig på att medlemssökningen löses till en fil-lokal typ utan att förväxlas med andra typdeklarationer. I föregående exempel gäller alla användningar av HiddenWidget i File1.cs den fillokala typ som deklarerats i File1.cs. Den fil-lokala deklarationen för HiddenWidget döljer den offentliga deklarationen i File2.cs.
Språkspecifikation för C#
Mer information finns i Deklarerad tillgänglighet i C#-språkspecifikationen och funktionsspecifikationen Fillokala typer .