Я обновляю некоторый старый код и обнаружил несколько случаев, когда один и тот же объект многократно приводится в действие каждый раз, когда необходимо вызвать одно из его свойств или методов. Пример:
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, я только больше запутался.
ОБНОВЛЕНИЕ
Пока что консенсус таков, что а) нет, приведения не оптимизированы, но б) хотя в результате может произойти небольшое снижение производительности, это маловероятно, и в) мне все равно следует подумать об их исправлении. Я решил, что когда-нибудь их исправлю, если у меня будет время. Между тем, я не буду о них беспокоиться.
Спасибо всем!