J'ai une question concernant les interfaces. J'ai compris que vous ne pouvez pas créer des instances d'interfaces, n'est-ce pas? Cependant, je vois sur l'utilisation de la page de démontrer l'interface IDictionaryEnumerator:référençant une interface
// Loop through all items of a Hashtable
IDictionaryEnumerator en = hshTable.GetEnumerator();
while (en.MoveNext())
{
string str = en.Value.ToString();
}
est-ce pas la création d'un objet nommé en de type IDictionaryEnumerator
? Je l'ai lu GetEnumerator()
en essayant de comprendre ce qu'il retourne:
Renvoie une référence à un objet recenseur , qui est utilisé pour itérer sur un objet de collection.
..mais je ne comprends pas vraiment quand devrais-je créer de telles références d'interfaces au lieu d'objets de classe. Je veux dire quel est l'avantage de le faire.
Merci d'avance.
ok, donc quand je dis "IDictionaryEnumerator en =" cela signifie que quelle que soit l'implémentation, l'objet sera toujours un type IDictionaryEnumerator.C'est logique mais je ne comprends pas vraiment quand j'ai besoin de ce type de flexibilité; pourquoi ne devrais-je pas simplement créer une instance de la classe qui implémente IDictionaryEnumerator directement? –
Si vous n'en avez pas besoin alors il est bon de créer l'instance par exemple Honda h = new Honda() au lieu de Car h = new Honda(). Mais pensez à une méthode générique qui accepte tous les types de Car et appelle la méthode run sur cela. Le comportement sera différent en fonction de ce que vous envoyez. Honda va dire bonjour je vais commencer. BMW dira vrooommm ... (je ne possède pas une Honda ou une BMW juste un ex :)). Vous n'avez pas besoin d'écrire deux méthodes différentes pour accepter une Honda et une autre pour accepter une BMW. – OpenSource
merci qui a du sens. –