Sdílet prostřednictvím


file (Referenční dokumentace jazyka C#)

Počínaje jazykem C# 11 file je kontextové klíčové slovo modifikátorem typu.

file Modifikátor omezuje obor a viditelnost typu nejvyšší úrovně na soubor, ve kterém je deklarován. Modifikátor file se obecně použije na typy napsané generátorem zdroje. Místní typy souborů poskytují generátory zdrojů pohodlným způsobem, jak se vyhnout kolizím názvů mezi vygenerovanými typy. file Modifikátor deklaruje místní typ souboru, jak je znázorněno v tomto příkladu:

file class HiddenWidget
{
    // implementation
}

Všechny typy vnořené do místního typu souboru jsou viditelné pouze v souboru, ve kterém je deklarována. Jiné typy v sestavení můžou používat stejný název jako místní typ souboru. Vzhledem k tomu, že místní typ souboru je viditelný pouze v souboru, kde je deklarován, tyto typy nevytvoří kolize pojmenování.

Místní typ souboru nemůže být návratovým typem ani typem parametru žádného člena, který je viditelný než file obor. Místní typ souboru nemůže být členem pole typu, který má větší viditelnost než file obor. Přístupnější typ však může implicitně implementovat typ místního rozhraní souboru. Typ může také explicitně implementovat místní rozhraní souboru, ale explicitní implementace lze použít pouze v rámci file oboru.

Příklad

Následující příklad ukazuje veřejný typ, který používá soubor-místní typ k poskytnutí metody pracovního procesu. Veřejný typ navíc implicitně implementuje místní rozhraní souboru:

// 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();
    }
}

V jiném zdrojovém souboru můžete deklarovat typy, které mají stejné názvy jako místní typy souborů. Místní typy souborů nejsou viditelné:

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

specifikace jazyka C#

Další informace naleznete v tématu Deklarovaná přístupnost ve specifikaci jazyka C# a specifikace funkce C# 11 - File local types .

Viz také