Значительно ли повышают скорость передачи значений по ссылке? [duplicate]

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

2 ответа

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

Параметры обычно передаются по значению, что означает, что они копируются. Для простых значений, таких как int , это просто означает, что копия значения помещается в стек.

Для ссылочных типов, таких как строка , это означает, что копия ссылки помещается в стек. Таким образом, это не означает, что копируется весь объект, это просто ссылка на копируемый объект.

Обычно не следует использовать ключевые слова ref или out , если для этого нет особой причины.

17
ответ дан 6 December 2019 в 09:17
поделиться

В C # есть типы значений и ссылочные типы

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

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

3
ответ дан 6 December 2019 в 09:17
поделиться
Другие вопросы по тегам:

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