Por que você precisa de métodos parciais em C#? Os eventos podem ser usados ​​para atingir o mesmo objetivo?

StackOverflow https://stackoverflow.com/questions/3628804

  •  26-09-2019
  •  | 
  •  

Pergunta

Eu estava lendo o livro "Apress Pro Linq: consulta integrada ao idioma em C#" e me deparei com métodos parciais, mas realmente não entendo qual é a necessidade deles.

Eu acho que os exemplos do livro (propriedades antes e depois da mudança) podem ser implementados usando eventos. Então, alguma explicação?

Foi útil?

Solução

Sim, você pode obter um efeito semelhante com os eventos, como pode com métodos parciais. Os métodos parciais são realmente apenas uma maneira de deixar geradores de código, principalmente designers, para gerar ganchos para o código não gerado. Os eventos podem preencher esse papel.

No entanto, existem vantagens para os métodos parciais sobre os eventos em particular

  • As chamadas de método parcial são completamente removidas da IL gerada se não houver implementação. Isso não pode ser feito com eventos.
  • O design de métodos parciais é resolver o problema em que há 1 provedor do gancho e 1 consumidor. Os eventos destinam -se a Modelar 1 fornecedor com N consumidores e ter a sobrecarga que vem com esse design
  • Não há problema de pedir (quem vai primeiro). Com os eventos, você precisa garantir que o código que se inscreva no evento seja executado antes do código gerado pelo designer que aumenta o evento. Isso nem sempre é possível se, digamos, o designer gera um construtor. Métodos parciais não têm esse problema.

Outras dicas

Eles não são "necessários", mas desejados para aplicações em larga escala. O uso extensivo de eventos leva ao anti-padronização da interface do usuário inteligente, onde a lógica de negócios é fortemente acoplada à interface do usuário, enquanto as funções parciais permitem separar melhor suas preocupações.

Aqui está um link para o guia de programação MSDN C# sobre métodos parciais.http://msdn.microsoft.com/en-us/library/wa80x488.aspx

O compilador removerá chamadas para métodos parciais se não houver implementações. Com a alternativa dos eventos, os ouvintes teriam que ser verificados em tempo de execução (eles também precisariam ser armazenados, etc.). Isso permite que os métodos parciais sejam mais executivos, especialmente quando há muitos "eventos" em potencial e apenas alguns têm "ouvintes" registrados.

Os métodos parciais são definidos no horário de compilação, eventos em tempo de execução. Então eles são coisas diferentes.

Métodos parciais foram trazidos ao câmara para estender as classes existentes sobre as quais você não tem controle (parte da estrutura ou gerado automaticamente)

Espero que isto ajude

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top