Warnung CA1831: Anstelle von bereichsbasierten Indexern AsSpan für Zeichenfolgen verwenden

Die .NET-Codeanalyseregel CA1831 ist ab .NET 5 standardmäßig 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 umfasst das .NET SDK .NET-Quellcodeanalysen. Mehrere dieser Regeln, einschließlich CA1831, werden standardmäßig aktiviert. Wenn Ihr Projekt Code enthält, der gegen diese Regel verstößt und dafür konfiguriert ist, Warnungen als Fehler zu interpretieren, könnte es sich hierbei um einen Breaking Change für Ihr Build handeln.

Die Regel CA1831 ermittelt Instanzen, bei denen ein auf Range basierender Indexer für eine Zeichenfolge verwendet wird, aber keine Kopie vorgesehen war. Wenn der auf Range basierende Indexer direkt für eine Zeichenfolge verwendet wird, um eine implizite Umwandlung durchzuführen, wird eine überflüssige Kopie des angeforderten Zeichenfolgenabschnitts erstellt. Beispiel:

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

Laut CA1831 soll der auf Range basierende Indexer stattdessen für eine Spanne der Zeichenfolge verwendet werden. Zum Beispiel:

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

Eingeführt in Version

5.0

  • Rufen Sie AsSpan(String) oder AsMemory(String) vor dem auf Range basierenden Indexer auf, um Ihren Code zu korrigieren und unnötige Zuteilungen zu vermeiden. Beispiel:

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

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

Betroffene APIs