This a general overview about what are the advantages for using interfaces in C#. Here are some the many reason fro which we should consider using an interface while development.
C# does not allow multiple class inheritance. We can derive from only one class at a time, but not more. We can indeed inherit our class, interface from multiple interfaces.
public class ClassB : ClassA, InterFaceA, InterFaceB { // }
Consider this example:
You have a class that is capable of playing media files(mp3). You give that class to you friend who tries to play MPEG type of files. It would not be possible for him to do so without making significant changes to you class.
public class MusicPlayer { void Play(Mp3 _mp3File){} }
Now consider this
Instead of passing type of mp3 file to Play Method what if you pass this Method, a derived from an interface of Type MediaType.
public interface MediaType { } public class Mp3 : MediaType { } public class MPEG : MediaType { } public class MusicPlayer { void Play(MediaType _mediaFile){} }
In this scenario, you can derive another MediaFile type and from MediaType like MPEG and pass that to the Play Method and it will happily accept it and play it for you (provided logic).
public class TestPlayers { public void PlayMedia() { MusicPlayer musicPlayer = new MusicPlayer(); musicPlayer.Play(new Mp3()); musicPlayer.Play(new MPEG()); } }
for reference and more information: