получил вопрос относительно метода расширения, который я написал, что выглядит следующим образом:ControlCollection оптимизация метод расширения
public static IEnumerable<T> FindControlsOfType<T>(this ControlCollection instance) where T : class
{
T control;
foreach (Control ctrl in instance)
{
if ((control = ctrl as T) != null)
{
yield return control;
}
foreach (T child in FindControlsOfType<T>(ctrl.Controls))
{
yield return child;
}
}
}
public static IEnumerable<T> FindControlsOfType<T>(this ControlCollection instance, Func<T, bool> match) where T : class
{
return FindControlsOfType<T>(instance).Where(match);
}
Идея заключается в том, чтобы найти все элементы управления, которые соответствуют критериям (, специфические, следовательно, Func < ..>) в коллекции управления. Я задал себе вопрос:
Второй метод (который имеет Func) сначала вызывает первый метод, чтобы найти все элементы управления типа T, а затем выполняет условие where или выполняет «runtime» оптимизацию вызова для выполнения условие на «полное» перечисление (если вы понимаете, что я имею в виду).
Во-вторых, есть ли какие-либо другие оптимизации, которые я могу сделать, чтобы код работал лучше.
Пример может выглядеть следующим образом:
var checkbox = this.Controls.FindControlsOfType<MyCustomCheckBox>(
ctrl => ctrl.CustomProperty == "Test"
)
.FirstOrDefault();
Для проблемы с производительностью, возможно, взгляните на http://msmvps.com/blogs/jon_skeet/archive/2010/03/25/just-how-lazy-are-you.aspx – Oliver
только то, что я был ищет - спас меня некоторое время, спасибо –