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.
O .NET 6 apresenta uma prévia de um novo recurso em que static os membros da interface podem ser marcados como abstract. Esse recurso envolve várias alterações na especificação ECMA 335 para permitir padrões de metadados de IL (linguagem intermediária) que antes eram considerados ilegais. Para obter mais informações, consulte dotnet/runtime#49558.
Comportamento antigo
Se uma interface estática foi marcada como abstract:
- O compilador C# gerou o erro CS0112.
- Ferramentas e outros compiladores geraram metadados de IL ilegais.
Novo comportamento
A partir do .NET 6, os membros da interface estática podem ser marcados como abstract e serão compilados com êxito. Além disso, os padrões de metadados il gerados agora são considerados legais devido a alterações na especificação ECMA 335.
A implementação de membros da interface static abstract é fornecida por tipos que implementam a interface.
Observação
Para o .NET 6, você deve habilitar recursos de visualização em seu projeto para poder marcar um membro da interface como static abstract.
Como este é um padrão IL recentemente legitimado, as ferramentas existentes podem processar os metadados associados de forma incorreta e apresentar um comportamento inesperado. É provável que as ferramentas encontrem o novo padrão de metadados, pois as interfaces com membros static abstract agora aparecem nos tipos primitivos, por exemplo, System.Int32.
Versão introduzida
.NET 6
Tipo de mudança disruptiva
Essa alteração pode afetar a compatibilidade binária.
Motivo da alteração
Essa alteração foi introduzida porque não havia como abstrair sobre membros estáticos e gravar código generalizado que se aplica entre tipos que definem esses membros estáticos. Isso foi particularmente problemático para tipos de membro que existem apenas em uma forma estática, por exemplo, operadores.
Ação recomendada
Atualize todas as ferramentas que consomem binários .NET ou código-fonte C# para considerar o novo conceito de membros da static abstract interface, incluindo aqueles que agora existem nos tipos primitivos do .NET.
APIs afetadas
Não aplicável