Partilhar via


O que há de novo no C# 13

O C# 13 inclui os seguintes novos recursos. Você pode experimentar esses recursos usando a versão mais recente do Visual Studio 2022 ou o SDK do .NET 9 Preview.

O C# 13 é suportado no .NET 9. Para obter mais informações, consulte Versionamento de linguagem C#.

Você pode baixar o SDK de visualização mais recente do .NET 9 na página de downloads do .NET. Você também pode baixar o Visual Studio 2022 - visualização, que inclui o SDK do .NET 9 Preview.

Novos recursos são adicionados à página "O que há de novo em C#" quando estão disponíveis em versões de visualização pública. A seção do conjunto de trabalho da página de status do recurso roslyn rastreia quando os próximos recursos são mesclados na ramificação principal.

Nota

Estamos interessados nos seus comentários sobre estas funcionalidades. Se você encontrar problemas com qualquer um desses novos recursos, crie um novo problema no repositório dotnet/roslyn .

Nova sequência de fuga

Você pode usar \e como uma sequência de escape literal de caractere para o ESCAPE caractere, Unicode U+001B. Anteriormente, você usou \u001b ou \x1b. O uso \x1b não era recomendado porque, se os próximos caracteres seguintes 1b fossem dígitos hexadecimais válidos, esses caracteres se tornavam parte da sequência de escape.

Tipo natural do grupo de métodos

Esse recurso faz pequenas otimizações para sobrecarregar a resolução envolvendo grupos de métodos. O comportamento anterior era para o compilador construir o conjunto completo de métodos candidatos para um grupo de métodos. Se fosse necessário um tipo natural, o tipo natural era determinado a partir do conjunto completo de métodos candidatos.

O novo comportamento é eliminar o conjunto de métodos candidatos em cada escopo, removendo os métodos candidatos que não são aplicáveis. Normalmente, estes são métodos genéricos com a aridade errada, ou restrições que não são satisfeitas. O processo continua para o próximo âmbito externo apenas se não tiverem sido encontrados métodos candidatos. Este processo segue mais de perto o algoritmo geral para resolução de sobrecarga. Se todos os métodos candidatos encontrados em um determinado escopo não corresponderem, o grupo de métodos não terá um tipo natural.

Você pode ler os detalhes das alterações na especificação da proposta.

Acesso implícito ao índice

O operador de índice implícito "do fim", ^, agora é permitido em uma expressão inicializadora de objeto. Por exemplo, agora você pode inicializar uma matriz em um inicializador de objeto, conforme mostrado no código a seguir:

var v = new S()
{
    buffer =
    {
        [^1] = 0,
        [^2] = 1,
        [^3] = 2,
        [^4] = 3,
        [^5] = 4,
        [^6] = 5,
        [^7] = 6,
        [^8] = 7,
        [^9] = 8,
        [^10] = 9
    }
};

Em versões anteriores ao C# 13, o ^ operador não pode ser usado em um inicializador de objeto. Você precisa indexar os elementos da frente.

Consulte também