Sdílet prostřednictvím


Modifikátor souboru

file Modifikátor omezuje viditelnost typu nejvyšší úrovně na soubor obsahující jeho deklaraci. Generátory zdrojů nejčastěji používají file modifikátor pro typy, které vygenerují. Místní typy souborů poskytují generátory zdrojů pohodlným způsobem, jak se vyhnout kolizím názvů mezi vygenerovanými typy.

Referenční dokumentace jazyka C# dokumentuje naposledy vydané verze jazyka C#. Obsahuje také počáteční dokumentaci k funkcím ve verzi Public Preview pro nadcházející jazykovou verzi.

Dokumentace identifikuje všechny funkce, které byly poprvé představeny v posledních třech verzích jazyka nebo v aktuálních verzích Public Preview.

Návod

Informace o tom, kdy byla funkce poprvé představena v jazyce C#, najdete v článku o historii verzí jazyka C#.

Modifikátor file deklaruje místní typ souboru, jak je znázorněno v tomto příkladu:

file class HiddenWidget
{
    // implementation
}

Všechny typy vnořené v místním typu souboru jsou viditelné pouze v souboru obsahujícím jeho deklaraci. 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 obsahujícím jeho deklaraci, tyto typy nevytvoří kolizi pojmenování.

Místní typ souboru nemůže být návratovým typem ani typem parametru žádného člena deklarovaného v jiném než místním typu. Místní typ souboru nemůže být členem pole jiného než místního typu. 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 takové explicitní implementace mohou být použity pouze v rámci stejného souboru.

Následující příklad ukazuje veřejný typ, který používá souborově lokální typ k poskytování pracovní metody. 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
    }
}

Vyhledávání členů dává přednost typu definovanému ve stejném souboru před typem, který není místní a je deklarován v jiném souboru. Toto pravidlo zajišťuje, že generátor kódu může spoléhat na vyhledávání členů, které vyhodnotí na místně definovaný typ bez nejednoznačnosti s jinými deklaracemi typu. V předchozím příkladu se všechna použití HiddenWidget v File1.cs přeloží na souborově lokální typ deklarovaný v File1.cs. Místní deklarace souboru HiddenWidget skryje veřejnou deklaraci v File2.cs.

Specifikace jazyka C#

Další informace naleznete v tématu Deklarovaná přístupnost ve specifikaci jazyka C# a specifikace funkce Místní typy souborů .

Viz také