Dans .NET Framework, certaines classes utilisent la syntaxe SomethingCollection
. Par exemple, lorsqu'il traite SqlCommand
, il a un paramètre Parameters
de type SqlParameterCollection
. Comme il ne dispose pas d'une forme de IEnumerable<SqlParameter>
(ou IList<SqlParameter>
ou similaire), il est impossible d'écrire:Pourquoi SomethingCollection est utilisé à la place de Collection <Something>?
foreach (var c in sqlCommand.Parameters)
{
Debug.WriteLine(string.Concat(c.ParameterName, ": ", c.Value));
}
Au lieu de cela, var
doit être remplacé par un SqlParameter
explicite.
La chose est très similaire lorsqu'ils traitent avec des contrôles Windows Forms (collections d'articles de ListView, etc.), et existe dans d'autres classes.
Quelle est cette chose? Pourquoi de telles classes existent-elles et sont-elles utilisées à la place des génériques IEnumerable
s/IList
s?
Principalement parce que les médicaments génériques n'existait pas dans .NET –