Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge aus, um die neuesten Funktionen, Sicherheitsupdates und technischen Support zu nutzen.
Dieser Artikel behandelt die folgenden Compiler-Fehler und -Warnungen:
Span<T>
konvertiert werden, da es sich nicht um eine zuweisbare Variable handelt.ReadOnlySpan<T>
konvertiert werden, da er nicht als Referenz übergeben oder zurückgegeben werden darf.int
, System.Index
, oderSystem.Range
, konvertiert werden kann.ref
' Feld handelt oder einen Typ aufweist, der nicht als Typargument gültig ist.foreach
-Anweisung für ein Inlinearray vom Typ wird nicht unterstützt.Sie deklarieren Inlinearrays als struct
-Typ mit einem einzelnen Feld und einem Attribut, das die Länge des Arrays angibt. Der Compiler generiert die folgenden Fehler für ungültige Inlinearraydeklarationen:
ref
' Feld handelt oder einen Typ aufweist, der nicht als Typargument gültig ist.Um diese Arrays zu beheben, stellen Sie sicher, dass Folgendes zutrifft:
struct
gibt kein explizites Layout an.struct
verfügt über ein einzelnes Instanzfeld und dieses Instanzfeld ist kein ref
-Feld.required
, volatile
oder readonly
.record
Modifizierer aus der Inlinearraydeklaration.Sie greifen auf Elemente eines Inlinearrays auf die gleiche Weise wie jedes Array zu. Der Compiler gibt aufgrund eines falschen Elementzugriffs die folgenden Fehler aus:
int
, System.Index
oder System.Range
konvertiert wird.foreach
Anweisung für ein Inlinearray vom Typ wird nicht unterstützt.Darüber hinaus gibt der Compiler beim Deklarieren eines Indexers die folgende Warnung aus:
Der generierte Code für einen Inline-Puffer greift direkt auf den Pufferspeicher zu und umgeht dabei alle deklarierten Indexer. Inlinearrays können nicht mit der foreach
-Anweisung verwendet werden.
Das Argument für den Indexer muss wie folgt lauten:
int
, ein System.Index
oder ein System.Range
.Sie verwenden System.Span<T> oder System.ReadOnlySpan<T> häufig, um mit Inlinearrays zu arbeiten. Der Compiler generiert die folgenden Fehler für ungültige Konvertierungen:
Span<T>
konvertiert werden, da es sich nicht um eine zuweisbare Variable handeltReadOnlySpan<T>
konvertiert werden, da er nicht als Referenz übergeben oder zurückgegeben werden darfDer Compiler erzeugt Code, der direkt auf den Speicher für einen Inline-Puffer zugreift. Daher werden einige Member nie aufgerufen. Der Compiler erzeugt die folgenden Warnungen, wenn Sie eines der Member schreiben, die nie aufgerufen werden:
Ein Inlinearray kann implizit in ein Span<T>
oder ein ReadOnlySpan<T>
konvertiert werden, um ein Inlinearray an Methoden zu übergeben. Der Compiler erzwingt Einschränkungen für diese Konvertierungen:
Span<T>
konvertieren zu können. Wenn das Array readonly, können Sie es nicht in ein schreibbares Span<T>
konvertieren. Sie können stattdessen ReadOnlySpan<T>
verwenden.Span<T>
oder ReadOnlySpan<T>
sein, damit die Konvertierung erfolgreich ist. Sie müssen entweder den Kontext der Spanne einschränken oder den Bereich des Inlinearrays erweitern.Darüber hinaus generiert der Compiler nie Aufrufe an eine Slice
-Methode in einem Inlinepuffer. Konvertierungsoperatoren zum Konvertieren eines Inlinepuffers in einen Span
oder ReadOnlySpan
werden nicht aufgerufen. Der Compiler generiert Code, um System.Span<T> oder System.ReadOnlySpan<T> direkt aus dem Speicherpuffer zu erstellen.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrieren