В общее Я бы сказал нет: придерживайтесь класса со свойствами. Тем не менее, существуют обстоятельства, которые могут требовать чего-то подобного - в частности, на компактных (например, XNA) или микро-структурных. В обоих случаях GC * очень отличается, и распределение объектов (и недетерминированный сбор) может оказать существенное влияние на приложение.
В таких случаях нередко можно увидеть, как в игру вступает больше структур, и ref
позволяет избежать распространенных проблем с «потерянным обновлением» (в большинстве .NET структуры должны быть неизменяемыми; снова XNA имеет некоторые сценарии, из-за которых возникает соблазн нарушить это правило). Другой подход, конечно, заключается в том, чтобы принять и вернуть данные - тогда тип может быть неизменным.
Если вы имеете в виду выполнение передачи объекта; тогда у вас есть для профилирования на точную настройку, которую вы собираетесь использовать. x86 против x64 - очевидная разница, но есть и другие. Например, использование ref
требует, чтобы значение находилось либо в поле, либо в локальной переменной, - но многие из настроек производительности JIT для структур работают на верхушке стека - это означает, что у вас может быть намного больше «ldloc» / » stloc "чем тебе строго нужно. Вы также вводите дополнительную разыменование.