Alors que j’écrivais des méthodes d’extension pour mes objects de logique métier, je suis arrivé à la question de renommer les méthodes de conversion. someObject.ToAnotherObject()
irait bien avec l’ someObject.ToAnotherObject()
largement utilisé.
Cependant, LINQ, par exemple, mélange les deux variantes et je ne trouve aucune différence entre elles. ToDictionary()
, ToList()
, AsParallel()
, AsQueryable()
, …
Quelles sont les différences entre ces deux conventions de dénomination et que dois-je savoir pour décider de les utiliser pour mes propres cours?
ToDictionary
et ToList
sont préfixés par To
car ils ne préservent pas nécessairement l’identité structurelle de la collection d’origine ou de ses propriétés.
List
en un Dictionary
crée une collection avec une toute nouvelle structure. HashSet
en une List
supprime la propriété d’unicité des ensembles. Les méthodes avec le préfixe As
ne font aucune de ces choses – elles fournissent simplement une vue alternative de la collection originale. Ils l’enrichissent.
Dans Linq, les méthodes ToXXX
exécutent toutes la requête et créent un nouvel object à partir des résultats, tandis que les méthodes AsXXX
génèrent une nouvelle requête différente. Il peut s’agir du même object mais accessible via une interface différente ( AsEnumerable()
fait cela) ou il peut s’agir d’un nouvel object modifiant la fonctionnalité (les autres méthodes le font, bien que certains vérifient s’il peut simplement renvoyer l’object donné). , par exemple, AsQueryable()
renverra la source
si elle implémente déjà IQueryable
ou crée un nouveau EnumerableQuery
sinon).