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.
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
Empfohlene Aktion
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
odernone
festlegen. 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.