Нет, это не увеличивает скорость значительно или вообще ничего. Напротив, используя ключевое слово ref
, вы добавляете еще один уровень косвенности, который может только замедлить выполнение кода.
Параметры обычно передаются по значению, что означает, что они копируются. Для простых значений, таких как int
, это просто означает, что копия значения помещается в стек.
Для ссылочных типов, таких как строка
, это означает, что копия ссылки помещается в стек. Таким образом, это не означает, что копируется весь объект, это просто ссылка на копируемый объект.
Обычно не следует использовать ключевые слова ref
или out
, если для этого нет особой причины.
В C # есть типы значений и ссылочные типы
В случае ссылочных типов, передача их без ключевого слова ref
означает передачу ссылок. Я не тестировал его, но ожидал, что разработчики компилятора и .NET framework сделают их передачу как можно быстрее. Я не могу себе представить, что передача ссылок на эти ссылки быстрее, чем передача ссылок в первую очередь. В этом нет смысла.
В случае типов значений это отдельная история. Если структура большая, ее копирование наверняка будет дорогостоящим, а передача ссылки должна быть быстрее. Но не зря типы значений должны быть типами значений. Если у вас есть тип значения и , вас беспокоит эффективность его передачи функциям, скорее всего, вы сделали ошибку, сделав его типом значения.