その理由は、これらのメソッドは I インターフェースを実装するためだけに存在し、クラスのパブリック インターフェースを拡張するためではないからです。
つまり、次の場合です。
public class MyClass : IConvertible
{
// implementation
}
実際、MyClass を変換可能にしたい場合は、その参照を IConvertible を期待するメソッドに渡すことができます。
public void DoSomethingWithConvertible(IConvertible conv)
ただし、型 MyClass の変数で Convert メソッドを公開したくない場合があります。MyClass のパブリック インターフェイスにそのメソッドを持たせたくない場合は、インターフェイスを明示的に実装します。それがアプローチの全体的な考え方です。これは、以下が許可されていないことを意味します。
MyClass a = new MyClass();
a.Convert();
ただし、次のことは引き続き許可されます。
MyClass a = new MyClass();
((IConvertible)a).Convert();
この背後にある全体的な考え方は、まったく同じインスタンスを使用しているにもかかわらず、MyClass にはメソッドがないということです。A as IConvertible にはメソッドがあります。インスタンスが分割されたパーソナリティを持つことを許可しているかのように考えてください。
通常、すべてのインターフェースの実装を暗黙のうちに終了します。ただし、上記の理由により、明示的に実装する非常に特殊な状況があります。
ところで、素晴らしい質問をありがとう!