Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
.NET-kodanalysregeln CA1831 är aktiverad som standard med början i .NET 5. Den skapar en byggvarning för all kod där en Range-baserad indexerare används på en sträng, men ingen kopia var avsedd.
Ändra beskrivning
Från och med .NET 5 innehåller .NET SDK .NET-källkodsanalyserare. Flera av dessa regler är aktiverade som standard, inklusive CA1831. Om projektet innehåller kod som bryter mot den här regeln och är konfigurerat för att behandla varningar som fel kan den här ändringen bryta mot bygget.
Regel CA1831 hittar instanser där en Range-baserad indexerare används på en sträng, men ingen kopia var avsedd. Om den Range-baserade indexeraren används direkt på en sträng för att skapa en implicit gjutning skapas en onödig kopia av den begärda delen av strängen. Till exempel:
ReadOnlySpan<char> slice = str[1..3];
CA1831 föreslår att du använder den Range-baserade indexeraren på ett strängintervall i stället. Till exempel:
ReadOnlySpan<char> slice = str.AsSpan()[1..3];
Version lanserad
5,0
Rekommenderad åtgärd
Om du vill korrigera din kod och undvika onödiga allokeringar, så anropar du AsSpan(String) eller AsMemory(String) innan du använder Range-baserade indexeraren. Till exempel:
ReadOnlySpan<char> slice = str.AsSpan()[1..3];Om du inte vill ändra koden kan du inaktivera regeln genom att ange dess allvarlighetsgrad till
suggestionellernone. Mer information finns i Konfigurera regler för kodanalys.Om du vill inaktivera kodanalys helt anger du
EnableNETAnalyzerstillfalsei projektfilen. Mer information finns i EnableNETAnalyzers.