Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A file módosító a felső szintű típus láthatóságát a deklarációt tartalmazó fájlra korlátozza. A forrásgenerátorok leggyakrabban az általuk létrehozott típusokra alkalmazzák a file módosító elemet. 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 C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.
A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.
Jótanács
Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.
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 a deklarációt tartalmazó fájlban láthatók. 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 a deklarációt tartalmazó fájlban látható, ezek a típusok nem okoznak elnevezési ütközést.
A fájl helyi típusa nem lehet egy nem fájlalapú típusban deklarált tag visszatérési típusa vagy paramétertípusa. A fájl helyi típusa nem lehet nem fájl helyi típusú mezőtag. 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 akadálymentesség a C# nyelvi specifikációjában és a Fájl helyi típusok funkcióspecifikációjában.