Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A regra CA1831 do analisador de código .NET está habilitada, por padrão, a partir do .NET 5. Produz um aviso de compilação para qualquer código em que um indexador baseado em Range seja usado numa string, mas não se pretendia realizar nenhuma cópia.
Alterar descriçã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 seu projeto contém código que viola essa regra e está configurado para tratar avisos como erros, essa alteração pode quebrar sua compilação.
A regra CA1831 encontra instâncias em que um indexador baseado em Range é usado numa cadeia de caracteres, mas nenhuma cópia foi pretendida. Se o indexador baseado em Range for usado diretamente em uma cadeia de caracteres para produzir uma conversão implícita, será criada uma cópia desnecessária da parte solicitada da cadeia de caracteres. Por exemplo:
ReadOnlySpan<char> slice = str[1..3];
CA1831 sugere usar o indexador baseado em Range num segmento da cadeia de caracteres, em vez disso. Por exemplo:
ReadOnlySpan<char> slice = str.AsSpan()[1..3];
Versão introduzida
5.0
Ação recomendada
Para corrigir o 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 não quiser alterar o código, você pode desativar a regra definindo sua gravidade como
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 de projeto. Para obter mais informações, consulte EnableNETAnalyzers.