Quando usar delega em vez de interfaces (guia de programação translation from VPE for Csharp)
Delegados e interfaces permitem um designer de classe separar a implementação e declarações de tipo.Um determinado interface podem ser herdadas e implementada por qualquer classe or struct.A Delegar pode ser criada para um método em qualquer classe, contanto que o método se adapta a assinatura do método para o delegado.Uma referência de interface ou um delegado pode ser usado por um objeto não tem conhecimento da classe que implementa o método de interface nem delegado.Dadas essas semelhanças, quando um designer de classe deve usar um delegado e quando ele deve usar uma interface?
Use um delegado nas seguintes circunstâncias:
Um padrão de design de eventos é usado.
É desejável para encapsular um método estático.
O chamador não tem nenhuma necessidade de acessar outras propriedades, métodos ou interfaces no objeto de implementação do método.
Fácil de composição é desejada.
Uma classe pode ser necessário mais de uma implementação do método.
Use uma interface nas seguintes circunstâncias:
Há um agrupar de métodos relacionados que podem ser chamados.
Uma classe só precisa de uma implementação do método.
A classe usando a interface desejará converter outros tipos de interface ou classe dessa interface.
O método sendo implementado é vinculado ao tipo ou identidade da classe: Por exemplo, métodos de comparação.
Um mercadoria exemplo do uso de uma interface de método único em vez de um delegado é IComparable a versão genérica, ou IComparable<T>. IComparable declara o CompareTo método, que retorna um número inteiro que especifica um menor que igual ou maior que o Relação entre dois objetos do mesmo tipo. IComparable pode ser usado sistema autônomo base para um algoritmo de classificar. Embora usando um método de comparação de delegado sistema autônomo a base de um algoritmo de classificar seria válida, não é ideal.Como a capacidade de comparar pertence à classe e o algoritmo de comparação não é alterado em time de execução, uma interface de método único é ideal.
Consulte também
Conceitos
Referência
Eventos (Guia de programação do C#)