Затраты производительности на использование ref вместо того, чтобы возвращать одни и те же типы?

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

int AddToInt(int original, int add){ return original+add; }

на

void AddToInt(ref int original, int add){ original+=add; } // 1st parameter gets the result

, потому что, на мой взгляд, этот

AddToInt(ref _value, _add);

легче читать код И, чем этот

_value = AddToInt(_value, _add);

. Я точно знаю, что делаю с кодом, используя ref , в отличие от возврата значения. Однако производительность - это то, к чему я отношусь серьезно, и, очевидно, разыменование и очистка намного медленнее, когда вы используете refs.

Я хотел бы знать , почему в каждом сообщении, которое я читаю, говорится, что очень мало мест, где обычно можно было бы передать ref (я знаю, что примеры надуманы, но я надеюсь, вы уловили идею), когда мне кажется, что пример ref меньше, чище и точнее.

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

13
задан oscar 25 May 2017 в 20:19
поделиться