Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden die folgenden Compilerfehler behandelt:
- CS0138: Fehler: Eine „using“-Namespaceanweisung kann nur auf Namespaces angewandt werden. „type“ ist ein Typ und kein Namespace.
- CD0431: Fehler: Der Alias „Bezeichner“ kann nicht mit
::
verwendet werden, da der Alias auf einen Typ verweist. Verwenden Sie stattdessen.
. - CS0432: Fehler: Der Alias „Bezeichner“ wurde nicht gefunden.
- CS0576: Fehler: Der Namespace „Namespace“ enthält eine Definition, die mit dem Alias „Bezeichner“ in Konflikt steht.
- CS0687: Fehler: Der Qualifizierer
::
für den Namespacealias wird immer zu einem Typ oder Namespace aufgelöst und ist somit an dieser Stelle ungültig. Erwägen Sie stattdessen die Verwendung von.
. - CS1529: Fehler: Eine „using“-Klausel muss allen anderen im Namespace definierten Elementen vorangehen, mit Ausnahme externer Aliasdeklarationen.
- CS1537: Fehler: Der „using“-Alias „alias“ ist bereits vorgängig in diesem Namespace aufgetreten.
- CS7000: Fehler: Unerwartete Verwendung eines Aliasnamens.
- CS7007: Fehler: Eine
using static
-Anweisung kann nur auf Typen angewendet werden. Erwägen Sie stattdessen eineusing namespace
-Anweisung - CS8083: Fehler: Ein „alias“-qualifizierter Name ist kein Ausdruck.
- CS8085: Fehler: Eine „using static“-Anweisung kann nicht zum Deklarieren eines Alias verwendet werden.
- CS8914: Fehler: Eine „global using“-Anweisung kann nicht in einer Namespacedeklaration verwendet werden.
- CS8915: Fehler: Eine „global using“-Anweisung muss allen nicht-“global using“-Anweisungen vorangehen.
- CS9055: Fehler: Ein dateilokaler Typ kann nicht in einer „global using static“-Anweisung verwendet werden.
- CS9130: Fehler: Der „using“-Alias darf nicht vom Typ
ref
sein. - CS9131: Fehler: Nur ein „using“-Alias darf
unsafe
sein. - CS9132: Fehler: Der „using“-Alias darf kein Nullable-Verweistyp sein.
- CS9133: Fehler: Der Modifizierer
static
muss dem Modifiziererunsafe
vorangestellt sein. - CS9162: Typ ist für „using static“ ungültig. Es kann nur eine Klasse, Struktur, Schnittstelle, Enumeration, Delegat oder Namespace verwendet werden.
Und die folgenden Compilerwarnungen:
- CS0105: Warnung: Die „using“-Anweisung für „namespace“ ist bereits vorher in diesem Namespace aufgetreten.
- CS0440: Warnung: Es sollte kein Alias mit dem Namen
global
definiert werden, daglobal::
immer ein Verweis auf den globalen Namespace und nicht auf einen Alias ist. - CS8019: Information: Nicht erforderliche „using“-Anweisung.
- CS8933: Information: Die „using“-Anweisung wurde zuvor bereits als „global using“ verwendet.
Diese Fehler und Warnungen deuten darauf hin, dass die using
-Anweisung nicht korrekt ist. In den folgenden Abschnitten werden diese Fehler und deren Behebung behandelt.
using-Anweisung
Die using
-Anweisung muss vor allen anderen Elementen in einer namespace
-Deklaration oder vor allen namespace
-Deklarationen in der Datei stehen. Wenn Sie eine using
-Anweisung später einfügen, generiert der Compiler den Fehler CS1529:
namespace UsingDirective;
public class MyClass
{
}
using System.Text.Json; // CS1529
Um dieses Problem zu beheben, verschieben Sie alle using
-Deklarationen an den Anfang der Datei oder an den Anfang des Namespace:
using System.Text.Json;
namespace UsingDirective;
public class MyClass
{
}
Der Compiler generiert die Warnung CS8933, CS0105 oder CS8019 für eine doppelte using
-Anweisung aus einer using
- oder global using
-Anweisung. Duplikate können entfernt werden.
Informationen zu Fehlern bei der Kombination einer using
-Anweisung mit den Modifizierern static
, global
oder unsafe
in einer using
-Anweisung finden Sie weiter unten in diesem Artikel.
„using static“-Anweisung
Die using static
-Anweisung importiert die Member eines Typs in den aktuellen Namespace. Im folgenden Beispiel werden die Methoden aus System.Console
(z. B. WriteLine
) in den aktuellen Namespace importiert:
using static System.Console;
Der Compiler generiert den Fehler CS0138, wenn Sie den Modifizierer static
weglassen:
using System.Console; // CS0138
Der Compiler generiert den Fehler CS7007, wenn Sie anstelle eines Typs den Modifizierer static
für den importierten Namespace einschließen:
using static System; // CS7007
Der Compiler gibt CS9162 aus, wenn das Symbol keiner der richtigen Typen ist.
Wenn Sie den Modifizierer static
mit dem Modifizierer unsafe
in einer using
-Anweisung kombinieren, muss der Modifizierer static
zuerst angegeben werden:
using static unsafe UnsafeExamples.UnsafeType;
Globale using-Anweisung
Eine global using
-Anweisung importiert den Namespace oder Typ in allen Quelldateien im aktuellen Projekt:
global using System.Text;
Sämtliche global using
-Anweisungen müssen allen nicht globalen using
-Anweisungen in der Quelldatei vorangestellt und dürfen nicht in einem namespace
platziert werden. Andernfalls werden CS8915 bzw. CS8914 generiert.
Darüber hinaus kann eine static global using
-Anweisung nicht auf einen dateilokalen Typ verweisen.
Aliasqualifizierer
Der Aliasqualifizierer (::
) steht vor einem Namespacealias oder hinter dem global
-Alias. Wenn Sie ::
verwenden, wo eigentlich .
verwendet werden sollte, um Elemente eines vollqualifizierten Namens zu trennen, gibt der Compiler einen der folgenden Fehler aus: CS0431, CS0432, CS0687, CS7000 oder CS8083.
Ersetzen Sie in allen Fällen ::
durch das Trennzeichen .
.
Wenn Sie außerdem einen Alias namens global
definieren, gibt der Compiler CS0440 aus. Der global
-Alias verweist immer auf den globalen Namespace. Sie können dafür keinen Alias deklarieren und sollten einen anderen Namen für Ihren Alias auswählen.
Konflikte bei Aliasnamen
Sie können mit einer using
-Direktive einen Alias für einen Namespace oder Typ deklarieren:
using JSON = System.Text.Json;
using ValueMap = System.Collections.Generic.Dictionary<string, decimal>;
using TimedData = (System.DateTime timeRecorded, decimal value);
Sie sollten dem Alias einen eindeutigen Namen zuweisen – in den vorherigen Beispielen der Name links vom =
-Zeichen. Die Verwendung eines Namens, der bereits einem Typ (z. B. Object
) oder einem Namespace (System
) zugeordnet ist, kann die Fehler CS0576 oder CS1537 verursachen.
Einschränkungen bei using-Aliasen
Vor C# 12 galten für die Programmiersprache bei using
-Anweisungen, die einen Alias für eine Typdeklaration erstellen, die folgenden Einschränkungen:
Sie können keinen Alias mit einer
using static
-Anweisung erstellen:using static con = System.Console; using static unsafe ip = int*;
Mit C# 12 wurden die folgenden Einschränkungen eingeführt:
Sie können die Modifizierer
in
,ref
oderout
in einem using-Alias nicht verwenden:// All these are invalid using RefInt = ref int; using OutInt = out int; using InInt = in int;
Eine
unsafe using
-Direktive muss einen Alias oder einestatic using
angeben:// Elsewhere: public namespace UnsafeExamples { public unsafe static class UnsafeType { // ... } } // Using directives: using unsafe IntPointer = int*; using static unsafe UnsafeExamples.UnsafeType; using unsafe UnsafeExamples; // not allowed
Sie können keinen Alias für einen Nullable-Verweistyp erstellen:
using NullableInt = System.Int32?; // Allowed using NullableString = System.String?; // Not allowed