Comment est-il possible que ReadOnlyCollection implémente IList? Ce dernier nécessite l'implémentation de la méthode Add, et ReadOnlyCollection ne l'implémente pas. Cependant, ReadOnlyCollection est concrète et peut être instancié ...Question sur les interfaces
Modifier
Le code suivant ne compile pas sur ma machine:
static void Main(string[] args)
{
List<string> people = new List<string>(){
"Sidney",
"Jim",
"Bob"};
ReadOnlyCollection<string> readOnlyPeople = new ReadOnlyCollection<string>(people);
readOnlyPeople.Add("Frank");
}
L'appel à "Ajouter" dans la dernière déclaration est maintenant souligné en bleu dans Visual Studio 2010.
Ce code ne sera pas compilé car la méthode 'Add' est implicitement implémentée. Vous devez lancer 'IList' avant de pouvoir y accéder. –
Je suis toujours confus. Où est-il «explicitement» mis en œuvre? Je pensais que les interfaces ne supportaient pas les implémentations de méthodes ... – Andrew
Vous avez raison de dire que les interfaces n'implémentent pas elles-mêmes la méthode. La mise en œuvre explicite est une chose spéciale en C# - [voir cette réponse pour plus d'informations] (http://stackoverflow.com/questions/143405/c-interfaces-implicit-and-explicit-implementation). –