<p>L’implementation <strong>implicite</strong> consiste a definir votre interface via un membre de votre classe. L’implementation <strong>explicite</strong> consiste a definir des methodes au sein de votre classe sur l’interface. Nous savons que cela semble confus, mais voici ce que nous voulons dire : <code>IList.CopyTo</code> serait implemente implicitement ainsi :</p>
<pre><code class="lang-auto">public void CopyTo(Array array, int index)
{
throw new NotImplementedException();
}
</code></pre>
<p>et explicitement ainsi :</p>
<pre><code class="lang-auto">void ICollection.CopyTo(Array array, int index)
{
throw new NotImplementedException();
}
</code></pre>
<p>La difference est que l’implementation implicite vous permet d’acceder a l’interface a travers la classe que vous avez creee en castant l’interface comme cette classe et comme l’interface elle-meme. L’implementation explicite vous permet d’acceder a l’interface uniquement en la castant comme l’interface elle-meme.</p>
<pre><code class="lang-auto">MyClass myClass = new MyClass(); // Declared as concrete class
myclass.CopyTo //invalid with explicit
((IList)myClass).CopyTo //valid with explicit.
</code></pre>
<p>Nous utilisons l’explicite principalement pour garder l’implementation propre, ou lorsque nous avons besoin de deux implementations. Quoi qu’il en soit, nous l’utilisons rarement.</p>
<p>Nous sommes certain qu’il existe d’autres raisons d’utiliser ou de ne pas utiliser l’explicite que d’autres mentionneront.</p>
<p>Consultez le <a href="https://stackoverflow.com/questions/143405/c-interfaces-implicit-and-explicit-implementation#143425"><strong>post suivant</strong></a> dans ce fil pour d’excellents arguments en faveur de chaque approche.</p>