Моему личному стилю кодирования принадлежит Enumerable.OfType
. Я использую его везде, это имеет смысл. В частности, IEnumerable
допускает мощную функциональность linqToObject. Я ненавижу "небезопасный для типов" цикл ObjectCollections, такой как примеры ниже. Теперь у меня есть несколько вопросов о цикле по этим "UnGenericCollections".
ConfigurationSectionCollection
HttpModuleCollection
SPBaseCollection
SPFieldCollection
ArrayList
Вопрос 1: Если я конвертирую этот ArrayList] в [11 11146341] Enumerable
Насколько велик дополнительный цикл по сравнению с простыми проверками foreach / if?
var ark = new ArrayList();
ark.Add(new Human());
ark.Add(new Human());
ark.Add(new Animal());
Вместо:
foreach (object passenger in ark)
{
if (passanger is Human) { }
if (passanger is Animal) { }
}
я использую:
foreach (var human in ark.OfType())
{
}
foreach (var animal in ark.OfType())
{
}
Вопрос 2: Какой способ приведения / преобразования будет использоваться во время цикла foreach в переменную другого типа? Это языковая функция или она работает "из коробки"?
foreach (Human human in ark) { }
Спасибо, что терпели мой ужасный английский. С уважением, Бенджамин