Я обновляю некоторый старый код и обнаружил несколько экземпляров, когда один и тот же объект бросается повторно каждый раз, когда нужно вызвать один из его свойств или методов. Пример:
if (recDate != null && recDate > ((System.Windows.Forms.DateTimePicker)ctrl).MinDate)
{
((System.Windows.Forms.DateTimePicker)ctrl).CustomFormat = "MM/dd/yyyy";
((System.Windows.Forms.DateTimePicker)ctrl).Value = recDate;
}
else
{
(System.Windows.Forms.DateTimePicker)ctrl).CustomFormat = " ";
}
((System.Windows.Forms.DateTimePicker)ctrl).Format = DateTimePickerFormat.Custom;
Моя склонность исправить это чудовище, но, учитывая мое ограниченное время, я не хочу беспокоиться ни о чем, что не влияет на функциональность или производительность.
Так что мне интересно, эти избыточные отбрасывания оптимизируются компилятором? Я попытался понять это, используя ildasm на упрощенном примере, но не знакомый с IL. Я только больше смутился.
UPDATE
До сих пор консенсус, по-видимому, заключался в том, что a) нет, броски не оптимизированы, но b), хотя в результате может быть небольшое снижение производительности, это маловероятно, и c) я должен рассмотреть фиксируя их в любом случае. Я сошел на сторону решения исправить это когда-нибудь, если у меня будет время. Между тем, я не буду беспокоиться о них.
Спасибо всем!