Implicit is when you define your interface via a member on your class. Explicit is when you define methods within your class on the interface. I know that sounds confusing but here is what I mean: IList.CopyTo would be implicitly implemented as:
public void CopyTo(Array array, int index) { throw new NotImplementedException(); } and explicitly as:
void ICollection.CopyTo(Array array, int index) { throw new NotImplementedException(); } The difference being that implicitly is accessiblethat implicit implementation allows you to access the interface through yourthe class you created when it is castby casting the interface as that class as well as when its castand as the interface itself. Explicit implementation allows ityou to access the interface only be accessible when castby casting it as the interface itself.
MyClass myClass = new MyClass(); // Declared as concrete class myclass.CopyTo //invalid with explicit ((IList)myClass).CopyTo //valid with explicit. I use explicit primarily to keep the implementation clean, or when I need two implementations. But regardlessRegardless, I rarely use it.
I am sure there are more reasons to use it/not use itexplicit that others will post.
See the next post in this thread for excellent reasoning behind each.