Насколько Дорогой Действительно ли кастингом является Объект? [дубликат]

Возможный дубликат:
Perfomance TypeCasting

Как дорогой это должно снять в качестве объекта как другой объект?

CustomClass instance = GenericObject as CustomClass

Этого нужно избежать как все затраты?

Желание видеть, как другие думают об этом. Я уверен, что это является очень ситуационным.

32
задан Community 23 May 2017 в 12:26
поделиться

4 ответа

Вам не следует беспокоиться о последствиях для производительности конкретных языковых функций, если у вас нет конкретных доказательств (измерений) того, что они действительно вызывают проблему.

Ваша основная проблема должна заключаться в правильности код и его ремонтопригодность.

Однако, как общее наблюдение, в C # часто можно избежать ненужного преобразования типов, просто применяя хорошие методы объектно-ориентированного программирования и надлежащим образом используя универсальные шаблоны (особенно коллекции). В тех случаях, когда вам действительно нужно выполнить приведение, маловероятно, что это будет узким местом производительности, если вы не делаете это в жестком цикле или с типами, которые могут вызвать недопустимое исключение приведения.

45
ответ дан 27 November 2019 в 20:09
поделиться

Нет, этого нельзя избегать любой ценой. Кастинг не очень дорогой. Конечно, если у вас есть цикл, который выполняется миллион раз в секунду, возможно, имеет смысл избегать преобразования типов, чтобы сохранить некоторую производительность, иначе это не вызовет проблем с производительностью.

Настоящая проблема с приведением типов состоит в том, что это обманчивый тип. безопасность. Если вы не будете осторожны, не так уж сложно внести ошибки или снизить читабельность кода, если вы повсюду раскидываете все вокруг.

26
ответ дан 27 November 2019 в 20:09
поделиться

Если вы можете использовать дженерики, это лучшее решение, чем приведение типов. Упаковка и распаковка - дорогостоящая операция, которой следует по возможности избегать. Проблема в том, что иногда ее просто невозможно избежать.

Также в другом ответе здесь упоминалось, что беспокоиться о чем-то вроде бокса очень тривиально по сравнению с конкретными проблемами производительности или ремонтопригодностью кода. Я полностью согласен с этим.

6
ответ дан 27 November 2019 в 20:09
поделиться

Как правило, стоимость отливки объекта на специальной основе низка по большому счету. Однако, если вы многократно выполняете приведение объектов много раз, тогда вам следует избегать этого, если вы обнаружите, что это является причиной проблемы с производительностью.

В конце концов, одним из основных улучшений с .NET 1.1 до 2.0 было введение универсальных типов - это решило проблему строго типизированных списков объектов (например, ArrayList = на основе объекта, List = типизированный список)

5
ответ дан 27 November 2019 в 20:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: