Tout simplement trouver par hasard, ajouter (t) est défini dans Icollection
ienumerable
6 Réponses :
iEnumerable code> est pour la lecture, pas pour écrire. p>
Comme son nom le dit, vous pouvez énumérer (boucle) sur un iéenérable, et c'est à ce sujet. Lorsque vous voulez être capable d'ajouter quelque chose, ce ne serait plus qu'un énumérable, car il a des fonctionnalités supplémentaires. P>
Par exemple, un tableau est une matrice iSenumerable, mais un tableau a une longueur fixe, vous ne pouvez donc pas ajouter de nouveaux articles. P>
IEnumerable est juste la «base» pour toutes sortes de collections (même des collections libéonnées - qui n'ont évidemment pas d'ajout () méthode). Plus vous ajouteriez à une "interface de base", plus ce serait spécifique. P>
un ienumerable
ajoutez code> éléments. P>
+1 pour utiliser le mot séquence i>, puisque iEnumerable est exactement cela, et pas une sorte de collection.
Un énumérable est exactement cela - quelque chose que vous pouvez énumérer sur et découvrir tous les articles. Cela n'implique pas que vous pouvez y ajouter. P>
Être capable d'énumérer est universel à de nombreux types d'objets. Par exemple, il est partagé par des tableaux et des collections. Mais vous ne pouvez pas ajouter 'à un tableau sans gâcher avec sa structure - tandis qu'une collection est spécifiquement conçue pour être ajoutée et retirée de. P>
techniquement, vous pouvez "ajouter" à un énumérable, mais en utilisant concat <> code> - Cependant, tout cela est créé un énumérateur qui énumère d'un énumérable à la suivante - donnant à l'illusion d'un ensemble unique contigieux. P>
Le nom dit tout. IEnumerable est destiné à énumérer des objets uniquement. L'ICOLLECTION est la collecte effective des articles et prend donc en charge la méthode d'ajout. P>
chaque Exemple: une liste de noms de couleur primaire serait un icollection code> devrait être
iEnumerable code> (je pense, et l'équipe-cadre .NET semble être d'accord avec moi ;-)), mais l'inverse ne pas toujours avoir du sens. Il y a une hiérarchie de "collection comme des objets" dans ce monde, et votre hypothèse qu'un énumérable serait une collection que vous pouvez ajouter des articles à ne pas revenir dans cette hiérarchie.
iEnumerable code> retourner
"rouge" code>,
"bleu" code> et
"vert" code>. Il ne ferait aucun sens logique de pouvoir faire un
primaireColors.add ("Violet vif") Code> sur une "collection" remplie comme ceci: p>
...whatever...
{
...
var primaryColors = EnumeratePrimaryColors();
...
}
private static IEnumerable<string> EnumeratePrimaryColors() {
yield return "Red";
yield return "Blue";
yield return "Green";
}
icollection code> hérités de
iEnumerable code> et
icollection
ienumerable
IEnumerable code>). En d'autres termes, vous avez raison: chaque
icollection code> est un
ienumerable code>.
Avait
ienumerable code> requis
Ajouter code> Pour être mis en œuvre, il y aurait beaucoup plus de questions sur: pourquoi
ienumerable code> avoir
ajouter code> i>. La façon dont c'est, est très utile :)