Compartilhar via


Alguns parâmetros em tipos derivados do Stream são renomeado

No .NET 6, alguns parâmetros de métodos em tipos derivados de System.IO.Stream foram renomeado para corresponder à classe base.

Descrição das alterações

Em versões anteriores do .NET, vários tipos derivaram de métodos substituídos de Stream, mas usam nomes de parâmetros diferentes daqueles usados pelo tipo base. Por exemplo, o parâmetro de matriz de bytes de DeflateStream.Read(Byte[], Int32, Int32) é chamado de array enquanto o argumento correspondente no método da classe base é chamado de buffer.

No .NET 6, todos os tipos que derivam de System.IO.Stream e tinham nomes de parâmetros incompatíveis foram colocados em conformidade com o tipo base usando os mesmos nomes de parâmetro que o tipo base.

Versão introduzida

.NET 6

Motivo da alteração

Há várias razões para a alteração:

  • Se um argumento inválido foi passado e uma exceção foi lançada, essa exceção pode ter contido o nome do parâmetro base ou o nome do parâmetro derivado, dependendo da implementação. Como o chamador pode ter usado uma referência tipada como base ou como o tipo derivado, é impossível que o nome do argumento na exceção sempre esteja correto.
  • Ter nomes de parâmetros diferentes torna mais difícil validar consistentemente o comportamento em todas as implementações Stream.
  • O .NET 6 adiciona um método público em Stream para validar argumentos e esse método precisa ter um nome de parâmetro consistente para ser usado.

O efeito dessa alteração interruptiva é mínimo:

  • Para binários existentes, o impacto fica limitado aos códigos que usam reflexão para examinar nomes de parâmetros nos tipos derivados afetados.
  • Para o código-fonte, o impacto fica limitado aos códigos que usam parâmetros nomeados para invocar métodos no tipo de fluxo derivado usando uma variável com tipo igual ao tipo derivado.

Em ambos os casos, a ação recomendada é usar consistentemente o nome do parâmetro base.

APIs afetadas

Confira também