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
Empfohlene Maßnahme
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
odernone
festlegen. Weitere Informationen finden Sie unter Konfigurieren von Codeanalyseregeln.Legen Sie
EnableNETAnalyzers
in Ihrer Projektdatei auffalse
fest, um die Codeanalyse vollständig zu deaktivieren. Weitere Informationen finden unter EnableNETAnalyzers.