Freigeben über


Warnung CA1831: Verwenden von AsSpan anstelle von bereichsbasierten Indexern für Zeichenfolge

Die .NET-Codeanalyseregel CA1831 ist standardmäßig ab .NET 5 aktiviert. Sie erzeugt eine Buildwarnung für Code, bei dem ein auf Range basierender Indexer für eine Zeichenfolge verwendet wird, aber keine Kopie vorgesehen war.

Änderungsbeschreibung

Ab .NET 5 enthält das .NET SDK .NET Source Code Analyzers. Einige dieser Regeln sind standardmäßig aktiviert, einschließlich CA1831. Wenn Ihr Projekt Code enthält, der gegen diese Regel verstößt und für die Behandlung von Warnungen als Fehler konfiguriert ist, kann diese Änderung ihren Build unterbrechen.

Regel CA1831 findet Fälle, in denen ein Range-basierter Indexer auf einem String verwendet wird, obwohl keine Kopie beabsichtigt war. Wenn der Range-basierte Indexer direkt für eine Zeichenfolge verwendet wird, um eine implizite Umwandlung zu erzeugen, wird eine unnötige Kopie des angeforderten Teils der Zeichenfolge erstellt. Beispiel:

ReadOnlySpan<char> slice = str[1..3];

CA1831 schlägt stattdessen vor, den Range-basierten Indexer für einen Bereich der Zeichenfolge zu verwenden. Beispiel:

ReadOnlySpan<char> slice = str.AsSpan()[1..3];

Eingeführte Version

5.0

  • Um Ihren Code zu korrigieren und unnötige Zuordnungen zu vermeiden, rufen Sie AsSpan(String) oder AsMemory(String) auf, bevor Sie den auf Range basierten Indexer verwenden. Beispiel:

    ReadOnlySpan<char> slice = str.AsSpan()[1..3];
    
  • Wenn Sie ihren Code nicht ändern möchten, können Sie die Regel deaktivieren, indem Sie den Schweregrad auf suggestion oder nonefestlegen. Weitere Informationen finden Sie unter Konfigurieren von Codeanalyseregeln.

  • Um die Codeanalyse vollständig zu deaktivieren, legen Sie `EnableNETAnalyzers` auf `false` in Ihrer Projektdatei fest. Weitere Informationen finden Sie unter EnableNETAnalyzers.

Betroffene APIs