«ref» не передает объект непосредственно в функцию, вместо этого он передает ссылку на переменную, которая хранится в/at.
Если объект является классом или интерфейсом, то всякий раз, когда вы обращаетесь к этой переменной в функции, она должна разыменовывать ее, а затем обращаться к переменной. Если он был передан без ключевого слова 'ref', тогда ему не нужно будет делать шаг разыменования (таким образом, он будет немного быстрее).
Если объект является структурой (или перечислением или другим базовым типом), ключевое слово 'ref' передает ссылку на переменную, которая хранит структуру, которая по-прежнему вызывает ошибку SLIGHT при разыменовании, когда вы ее используете, но если вы его не укажете, программа должна выделить память для нового экземпляра структуры и затем скопировать ее. В большинстве случаев быстрее передать структуры через ключевое слово ref, но это может быть не так, если это действительно небольшая структура или если она разыменована много (и я имею в виду LOT).
Итак, если вы передаете структуру, то, как правило, путь - это путь, иначе на самом деле не будет большой разницы (накладные расходы на этапе разыменования являются незначительными).
О, и для того, чтобы ответить на вопрос, битмап - это класс, поэтому ключевое слово 'ref' действительно не сделает разницу в скорости по параметру non-thef '.
vb.net: [which-is-fast-byval-orreref] (http://stackoverflow.com/questions/408101/which-is-faster-byval-or-byref) – nawfal
Теперь есть способ как можно было бы передать битмап по значению. – IllidanS4