Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden de volgende compilerfouten behandeld:
- CS0138: Fout: A using namespace directive can only be applied to namespaces; 'type' is een type dat geen naamruimte is.
-
CS0431: Fout: kan alias 'id' niet gebruiken omdat
::de alias verwijst naar een type. Gebruik.in plaats daarvan. - CS0432: Fout: Alias 'id' niet gevonden.
- CS0576: Fout: naamruimte 'naamruimte' bevat een definitie die conflicteert met alias 'id'.
-
CS0687: Fout: De aliaskwalificatie
::van de naamruimte wordt altijd omgezet in een type of naamruimte, dus is hier illegaal. Overweeg in plaats daarvan te gebruiken.. - CS1529: Fout: een using-component moet voorafgaan aan alle andere elementen die zijn gedefinieerd in de naamruimte, behalve externe aliasdeclaraties.
- CS1537: Fout: het gebruik van alias 'alias' verscheen eerder in deze naamruimte.
- CS7000: Fout: Onverwacht gebruik van een aliasnaam.
-
CS7007: Fout: Een
using staticinstructie kan alleen worden toegepast op typen. Overweeg in plaats daarvan eenusing namespacerichtlijn - CS8083: Fout: een alias gekwalificeerde naam is geen expressie.
- CS8085: Fout: een instructie 'using static' kan niet worden gebruikt om een alias te declareren.
- CS8914: Fout: Een globale gebruiksrichtlijn kan niet worden gebruikt in een naamruimtedeclaratie.
- CS8915: Fout: Een globale gebruiksrichtlijn moet voorafgaan aan alle niet-globale gebruiksrichtlijnen.
-
CS9130: Fout: Het gebruik van alias kan geen type zijn
ref. -
CS9131: Fout: alleen een using-alias kan zijn
unsafe. - CS9132: Fout: Het gebruik van alias kan geen null-verwijzingstype zijn.
-
CS9133: Fout:
staticwijziging moet voorafgaan aanunsafewijziging. - CS9162: Type is niet geldig voor het gebruik van statisch. Alleen een klasse, struct, interface, opsomming, gemachtigde of naamruimte kan worden gebruikt.
En de volgende compilerwaarschuwingen:
- CS0105: Waarschuwing: de using-instructie voor 'naamruimte' verscheen eerder in deze naamruimte.
-
CS0440: Waarschuwing: Het definiëren van een alias met de naam
globalis onaangenaam omdatglobal::altijd verwijst naar de globale naamruimte en niet naar een alias. - CS8019: Info: Onnodig gebruik van richtlijn.
- CS8933: Info: De using-instructie verscheen eerder als globaal gebruik.
Deze fouten en waarschuwingen geven aan dat de using instructie niet juist is gevormd. In de volgende secties worden deze fouten behandeld en hoe u deze kunt corrigeren.
Instructie gebruiken
De using richtlijn moet voorafgaan aan alle andere elementen in een namespace aangifte of vóór namespace eventuele declaraties in het bestand. Als u later een using instructie in het bestand plaatst, veroorzaakt dit dat de compiler fout CS1529 produceert:
namespace UsingDirective;
public class MyClass
{
}
using System.Text.Json; // CS1529
Als u dit probleem wilt oplossen, verplaatst u eventuele using declaraties naar de bovenkant van het bestand of de bovenkant van de naamruimte:
using System.Text.Json;
namespace UsingDirective;
public class MyClass
{
}
De compiler produceert waarschuwing CS8933, CS0105 of diagnostische CS8019 voor een dubbele using instructie van een using of global using instructie. U kunt eventuele duplicaten verwijderen.
Het onjuist combineren van een using richtlijn met de static, globalof unsafe modifiers op een using richtlijn wordt verderop in dit artikel behandeld.
Statische instructie gebruiken
De using static richtlijn importeert de leden van één type in de huidige naamruimte. In het volgende voorbeeld worden de methoden geïmporteerd uit System.Console, zoals WriteLine in de huidige naamruimte:
using static System.Console;
De compiler genereert CS0138 als u de static wijzigingsfunctie weglaat:
using System.Console; // CS0138
De compiler genereert CS7007 als u de wijzigingsfunctie voor het importeren van de static naamruimte opneemt in plaats van een type:
using static System; // CS7007
De compiler verzendt CS9162 als het symbool niet een van de juiste typen is.
Als u de static modifier combineert met de unsafe modifier in een using richtlijn, moet de static modifier eerst komen:
using static unsafe UnsafeExamples.UnsafeType;
Globale gebruiksrichtlijn
Een global using richtlijn importeert de naamruimte of typ alle bronbestanden in het huidige project:
global using System.Text;
Alle global using richtlijnen moeten voorafgaan aan niet-globale using richtlijnen in dat bronbestand en mogen niet in een namespace. Dit resulteert respectievelijk in CS8915 en CS8914.
Bovendien kan een static global using richtlijn niet verwijzen naar een bestand-lokaal type.
Aliaskwalificatie
De aliaskwalificatie, ::gaat vooraf aan een naamruimtealias of volgt de global alias. Als u waar ::. moet worden gebruikt om elementen van een volledig gekwalificeerde naam te scheiden, verzendt de compiler een van CS0431, CS0432, CS0687, *CS7000 of CS8083.
Vervang in alle gevallen het :: door het . scheidingsteken.
Als u bovendien een alias met de naam globaldefinieert, geeft de compiler CS0440 uit. De global alias verwijst altijd naar de globale naamruimte. Het declareren van een alias werkt niet en u moet een andere naam voor uw alias kiezen.
Conflicten tussen aliasnamen
U kunt een alias declareren naar een naamruimte of een type met een using instructie:
using JSON = System.Text.Json;
using ValueMap = System.Collections.Generic.Dictionary<string, decimal>;
using TimedData = (System.DateTime timeRecorded, decimal value);
U moet proberen een unieke naam voor de alias te maken, de naam links van het = aanmeldingsvenster in de voorgaande voorbeelden. Als u een naam gebruikt die al is toegewezen aan een type (bijvoorbeeldObject) of een naamruimte (System) kan CS0576 of CS1537 worden veroorzaakt.
Beperkingen voor het gebruik van aliassen
Vóór C# 12 heeft de taal deze beperkingen opgelegd voor using instructies die een alias maken voor een typedeclaratie:
U kunt geen alias maken met een
using staticinstructie:using static con = System.Console; using static unsafe ip = int*;
Vanaf C# 12 worden deze beperkingen geïntroduceerd:
U kunt de
in,refofoutmodifiers niet gebruiken in een alias:// All these are invalid using RefInt = ref int; using OutInt = out int; using InInt = in int;Een
unsafe usingrichtlijn moet een alias opgeven, of eenstatic using:// Elsewhere: public namespace UnsafeExamples { public unsafe static class UnsafeType { // ... } } // Using directives: using unsafe IntPointer = int*; using static unsafe UnsafeExamples.UnsafeType; using unsafe UnsafeExamples; // not allowedU kunt geen alias maken voor een null-verwijzingstype:
using NullableInt = System.Int32?; // Allowed using NullableString = System.String?; // Not allowed