Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A regra do analisador de código .NET CA1831 está habilitada, por padrão, a partir do .NET 5. Ela gera um aviso de build para códigos em que um indexador baseado em Range é usado em uma cadeia de caracteres, quando não há intenção de cópia.
Descrição da alteração
A partir do .NET 5, o SDK do .NET inclui analisadores de código-fonte do .NET. Várias dessas regras estão habilitadas, por padrão, incluindo CA1831. Se o projeto contiver código que viole essa regra e estiver configurado para tratar avisos como erros, essa alteração poderá interromper o build.
A regra CA1831 encontra casos em que um indexador baseado em Range é usado em uma string, mas nenhuma cópia foi pretendida. Se o indexador baseado em Range for usado diretamente sobre uma cadeia de caracteres para gerar uma conversão implícita, uma cópia desnecessária da parte solicitada da cadeia de caracteres é feita. Por exemplo:
ReadOnlySpan<char> slice = str[1..3];
A CA1831 sugere o uso do indexador baseado em Range em um intervalo da cadeia de caracteres. Por exemplo:
ReadOnlySpan<char> slice = str.AsSpan()[1..3];
Versão introduzida
5,0
Ação recomendada
Para corrigir seu código e evitar alocações desnecessárias, chame AsSpan(String) ou AsMemory(String) antes de usar o indexador baseado em Range. Por exemplo:
ReadOnlySpan<char> slice = str.AsSpan()[1..3];Se você não quiser alterar seu código, poderá desabilitar a regra definindo sua severidade para
suggestionounone. Para obter mais informações, consulte Configurar regras de análise de código.Para desativar completamente a análise de código, defina
EnableNETAnalyzerscomofalseno arquivo do projeto. Para obter mais informações, consulte EnableNETAnalyzers.