Исходный код
return Array.IndexOf<int>
(
Array.ConvertAll<object, int>
(
usedTemplates,
delegate(object o) { return (int)o; }
),
templateID
)
>= 0;
Что не так в исходном коде
Беглый анализ кода даёт представление о назначении этого фрагмента: здесь выполняется проверка наличия шаблона с заданным идентификатором (templateID
) в списке использованных шаблонов (usedTemplaes
).
Я не люблю реализации алгоритмов проверки, которые без должного на то основания выполняют преобразования своих входных данных.
Вместо преобразования массива шаблонов к массиву идентификаторов с последующим поиском в нём нужного значения, следовало бы ограничиться поиском элемента в исходном массиве шаблонов с кастомной проверкой. Такой фокус позволяет проделать метод Array.Find
Index:
return Array.FindIndex(usedTemplates, template => (int)template == templateID) >= 0;