Kommentar
Å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.
C#-kompilatorn genererar fel och varningar när du missbrukar fillokala typer. Fillokala typer visas endast i filen där du deklarerar dem. Den här diagnostiken hjälper dig att följa reglerna för att deklarera och använda fillokala typer.
- CS9051: Fillokal typ kan inte användas i en medlemssignatur i icke-fillokal typ.
- CS9052: Fillokal typ kan inte använda åtkomstmodifierare.
- CS9053: Fillokal typ kan inte användas som bastyp av icke-fillokal typ.
- CS9054: Fillokal typ måste definieras i en toppnivåtyp. Den är en kapslad typ.
- CS9055: Fil-lokal typ kan inte användas i ett "global using static"-direktiv.
- CS9056: Typer och alias kan inte namnges "fil".
- CS9068: Fillokal typ måste deklareras i en fil med en unik sökväg. Sökvägen används i flera filer.
- CS9069: Fillokal typ kan inte användas eftersom den innehållande filsökvägen inte kan konverteras till motsvarande UTF-8 byte-representation.
- CS9071: Namnområdet innehåller redan en definition för typen i den här filen.
Synlighetsbegränsningar
- CS9051: Fillokal typ kan inte användas i en medlemssignatur i icke-fillokal typ.
- CS9052: Fil-lokal typ kan inte använda åtkomstmodifierare.
- CS9053: Fillokal typ kan inte användas som bastyp av icke-fillokal typ.
- CS9055: Fillokal typ kan inte användas i ett "globalt med statiskt" direktiv.
En fillokal typ visas endast i filen som innehåller deklarationen. Kompilatorn tillämpar begränsningar för att förhindra att fillokala typer "läcker" utanför det avsedda omfånget:
- En fillokal typ kan inte visas i signaturen (parametrar, returtyp eller typbegränsningar) för en medlem som deklarerats i en icke-fillokal typ (CS9051). Den här begränsningen säkerställer att koden i andra filer inte är beroende av typer som den inte kan komma åt.
- Fil-lokala typer kan inte ha explicita åtkomstmodifierare som
public,internalellerprivate(CS9052). Modifierarenfiledefinierar redan typens synlighetsomfång, vilket gör andra åtkomstmodifierare meningslösa. - En icke-fillokal typ kan inte ärva från en fillokal typ (CS9053). Om en härledd typ visas utanför filen måste dess bastyp också vara synlig. En icke-fillokal typ kan dock implementera ett fillokalt gränssnitt.
- En fil-lokal typ kan inte användas i ett
global using static-direktiv (CS9055). Globala användningar gäller för alla filer i kompileringen, men fillokala typer visas endast i deklareringsfilen.
För att lösa dessa fel, antingen ta bort file modifieraren från typ för att göra den tillgänglig utanför filen, eller ändra användande kod för att undvika att exponera den fil-lokala typen.
Deklarationsregler
- CS9054: Fillokal typ måste definieras i en toppnivåtyp. Den är en kapslad typ.
- CS9056: Typer och alias kan inte namnges "fil".
- CS9071: Namnområdet innehåller redan en definition för typen i den här filen.
Kompilatorn tillämpar regler för hur fillokala typer deklareras:
- Fillokala typer måste deklareras på den översta nivån i en fil, inte kapslade inom en annan typ (CS9054). Lös det här felet genom att flytta typdeklarationen utanför valfri typ eller ta bort
filemodifieraren. - Typer och typalias kan inte namnges
fileeftersom det nu är ett kontextuellt nyckelord (CS9056). Lös det här felet genom att byta namn på typen eller använda@fileför att undkomma identifieraren. - En fil kan inte deklarera flera fillokala typer med samma namn i samma namnområde (CS9071). Varje fillokal typ måste ha ett unikt namn inom dess namnområdesomfång i filen. Lös det här felet genom att byta namn på en av de motstridiga typerna.
Krav för filsökväg
- CS9068: Fillokal typ måste deklareras i en fil med en unik sökväg. Sökvägen används i flera filer.
- CS9069: Fillokal typ kan inte användas eftersom den innehållande filsökvägen inte kan konverteras till motsvarande UTF-8 byte-representation.
Kompilatorn använder filsökvägen för att generera unika interna namn för fillokala typer. Med det här namngivningsschemat kan flera filer deklarera fillokala typer med samma namn utan konflikt:
- Varje fil som innehåller fillokala typer måste ha en unik sökväg i kompileringsfilen (CS9068). Det här felet uppstår vanligtvis med källgeneratorer som skapar flera filer med samma sökväg. Lös det här felet genom att se till att varje genererad fil har en distinkt sökväg.
- Filsökvägen måste konverteras till UTF-8-kodning (CS9069). Det här felet uppstår när filsökvägen innehåller tecken som inte kan representeras i UTF-8. Lös det här felet genom att byta namn på filen eller katalogen så att de använder tecken som är giltiga i UTF-8.
De här felen påverkar vanligtvis upphovsmännen till källgeneratorn. Mer information om hur du använder fillokala typer i källgeneratorer finns i fillokala typer.