В .NET Framework есть некоторые классы, которые используют синтаксис SomethingCollection
.
Например, при работе с SqlCommand
он имеет параметр Parameters
типа SqlParameterCollection
.Поскольку он не имеет формы IEnumerable<SqlParameter>
(или IList<SqlParameter>
или чего-то подобного), невозможно написать:
foreach (var c in sqlCommand.Parameters)
{
Debug.WriteLine(string.Concat(c.ParameterName, ": ", c.Value));
}
Вместо этого var
должен быть заменен явным SqlParameter
.
Эта вещь очень похожа при работе с элементами управления Windows Forms (коллекциями элементов списка и т. Д.) И существует в других классах.
Что это за вещь?Почему такие классы существуют и используются вместо общих IEnumerable
s / IList
s?