Megosztás a következőn keresztül:


A fájlmódosító

A C# 11-től kezdődően a file környezeti kulcsszó egy típusmódosító.

A file módosító a legfelső szintű típus láthatóságát arra a fájlra korlátozza, amelyben deklarálva van. A file módosító leggyakrabban a forrásgenerátor által írt típusokra van alkalmazva. A fájlalapú típusok kényelmesen biztosítják a forrásgenerátorok számára a névütközések elkerülését a generált típusok között. A file módosító fájl-helyi típust deklarál az alábbi példához hasonlóan:

file class HiddenWidget
{
    // implementation
}

A fájl helyi típusán belül beágyazott típusok szintén csak abban a fájlban láthatók, amelyben deklarálva van. Az összeállítás más típusai ugyanazt a nevet használhatják, mint egy fájlhoz kötött típus. Mivel a fájl helyi típusa csak abban a fájlban látható, amelyben deklarálva van, ezek a típusok nem okoznak elnevezési ütközést.

A fájl helyi típusa nem lehet a nem fájlalapú típusban deklarált tagok visszatérési típusa vagy paramétertípusa. A fájl helyi típusa nem lehet egy nem fájl helyi mezőtagja. A láthatóbb típus azonban implicit módon implementálhat egy fájl-helyi felülettípust. A típus kifejezetten is implementálhat fájl-helyi felületet, de explicit implementációk csak ugyanazon a fájlon belül használhatók.

Az alábbi példa egy olyan nyilvános típust mutat be, amely fájl-helyi típust használ a feldolgozói módszer biztosításához. Emellett a nyilvános típus implicit módon implementál egy fájl-helyi felületet:

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

Egy másik forrásfájlban deklarálhat olyan típusokat, amelyek neve megegyezik a fájl helyi típusaival. A fájl helyi típusai nem láthatók:

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

A tagkeresés az ugyanabban a fájlban deklarált fájl-helyi típust részesíti előnyben egy másik fájlban deklarált nem fájlalapú típussal szemben. Ez a szabály biztosítja, hogy a forrásgenerátor olyan tagkeresésekre támaszkodjon, amelyek fájl-helyi típusra vannak feloldva anélkül, hogy más típusdeklarációkkal kapcsolatban kétértelműség jelenik meg. Az előző példában a HiddenWidgetFile1.cs minden felhasználási módja a File1.csdeklarált fájl helyi típusára van feloldva. A HiddenWidget fájl helyi deklarációja elrejti a nyilvános deklarációt File2.cs.

C# nyelvspecifikáció

További információ: Deklarált hozzáférhetőség a C# nyelvi specifikációés a C# 11 – Fájl alapú helyi típusok funkcióspecifikációban.

Lásd még: