Delegates vs Interfaces in C#

后端 未结 5 638
遇见更好的自我
遇见更好的自我 2021-01-30 00:37

I would like to pose this question as long as I am trying currently to dig into the use and the purpose of delegates, although it is likely to have been asked in similar formula

5条回答
  •  悲哀的现实
    2021-01-30 01:25

    From When to Use Delegates Instead of Interfaces (MSDN):

    Both delegates and interfaces enable a class designer to separate type declarations and implementation. A given interface can be inherited and implemented by any class or struct. A delegate can be created for a method on any class, as long as the method fits the method signature for the delegate. An interface reference or a delegate can be used by an object that has no knowledge of the class that implements the interface or delegate method. Given these similarities, when should a class designer use a delegate and when should it use an interface?

    Use a delegate in the following circumstances:

    • An eventing design pattern is used.
    • It is desirable to encapsulate a static method.
    • The caller has no need to access other properties, methods, or interfaces on the object implementing the method.
    • Easy composition is desired.
    • A class may need more than one implementation of the method.

    Use an interface in the following circumstances:

    • There is a group of related methods that may be called.
    • A class only needs one implementation of the method.
    • The class using the interface will want to cast that interface to other interface or class types.
    • The method being implemented is linked to the type or identity of the class: for example, comparison methods.

    One good example of using a single-method interface instead of a delegate is IComparable or the generic version, IComparable(Of T). IComparable declares the CompareTo method, which returns an integer that specifies a less than, equal to, or greater than relationship between two objects of the same type. IComparable can be used as the basis of a sort algorithm. Although using a delegate comparison method as the basis of a sort algorithm would be valid, it is not ideal. Because the ability to compare belongs to the class and the comparison algorithm does not change at run time, a single-method interface is ideal.

    From Delegates Vs Interfaces in C#:

    Delegates and Interfaces are two distinct concepts in C# but they share a commonality. Both delegates and interfaces only include the declaration. Implementation is done by a different programming object.

提交回复
热议问题