Comment obtenir les éléments de comptage à partir d'un IList<> comme un objet?
Dans une méthode, j'obtiens une object
.
Dans certaines situations, cette object
peut être un IList
de "quelque chose" (je n'ai aucun contrôle sur ce "quelque chose").
Je suis en train d':
- Identifier que cet objet est un
IList
(de quelque chose) - Cast le
object
dans un "IList<something>
" pour être en mesure d'obtenir laCount
.
Pour l'instant, je suis coincé et à la recherche d'idées.
Est le
Oui,
Count
tous que voulez-vous? Si oui, vous n'avez pas besoin d'être un IList<T>
, une simple IEnumerable
fera.Oui,
Count
est tout ce que je veux. Cependant, je ne peux pas voir tout Count
dans IEnumerable
?OriginalL'auteur remio | 2012-01-25
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vérifier si votre
object
implémenteIList
à l'aide deis
.Ensuite, vous pouvez lancer votre
object
àIList
pour obtenir le nombre.IList<T>
être unIList
. Mais commeList<T>
etCollection<T>
sontIList
s, Ce qui est suffisant pour moi. Merci.OriginalL'auteur dknaack
ICollection
au cours de la coulée dansIList
?Volonté de travailler avec plus de types de collections, de casting pour IEnumerable et de la lecture .Count() au lieu de .Le comte va travailler encore plus.
mais
IEnumerable.Count()
risques énumération de la collection dans le but de compter ses points.Dépend sur le type réel de la collecte. Pour les listes, il ne sera pas.
C'est exactement ce que j'ai eu des doutes sur, mais comme il ne sera pas le cas pour les listes selon DannyVarod' statemtent, il semble être un bon compromis pour être capable de gérer la plupart des situations. Les développeurs de "juste" besoin d'en être conscient.
OriginalL'auteur Danny Varod
Cette affiche 3, parce que int[] est un IList.
OriginalL'auteur Petar Ivanov
Depuis tout ce que vous voulez est le comte, vous pouvez utiliser le fait que tout ce qui implémente
IList<T>
met également en œuvreIEnumerable
; et, en outre, il est une méthode d'extension dansSystem.Linq.Enumerable
qui retourne le nombre de (générique) de la séquence:L'appel à
Cast
est parce que hors de la zone de il n'y a pas unCount
sur la non-générique(IEnumerable
.oui, vous le feriez. Parce que vous appelez
Cast<object>
, vous ne serez pas en mesure de bénéficier de la liste sous-jacente estCount
de la propriété, de sorte que vous sera en effet à itérer l'ensemble de la liste afin de compter les éléments. En outre, si les éléments de la liste sont d'un type valeur, vous aurez à cocher chacun d'eux à cause de la fonte deobject
.OriginalL'auteur AakashM