UPDATE: Я понимаю, основные понятия C#, я должен объяснять это плохо ...В чем разница между методом расширения и методом с параметром ref?
поток = Тип ссылки, указатель на ячейку памяти, которая содержит реальный объект
Параметр = Passed как тип объекта (поток по-прежнему является Ссылочный тип, а INT будет тип значения)
Ссылка Параметр = Позволяет манипуляции параметра, который будет сохраняться за пределами метода.
Чтобы посмотреть на это еще несколько и выполнить некоторые тесты, кажется, что ответ зависит от того, что я пытаюсь сделать. Этот вопрос помог мне отличить то, что я пытался сделать для своих тестов: How can I get an extension method to change the original object?
Для большинства моих помощников методы расширения отлично работают, так как они могут вернуть ответ, и мне не нужно заменять исходный объект. Для других помощников мне лучше использовать метод с параметром ref, чтобы я мог обновить исходный объект. Я мог бы сделать расширение mimic параметром ref, возвращая новый объект, но при этом это штраф за память с учетом дополнительного распределения.
Созерцая некоторые из вспомогательных классов я создал, мне было интересно, если есть какие-либо функциональные или эксплутационные различия между расширениями и методами с параметром исх. В частности, с чем-то большим, чем потоки, первым я сказал, что передача потока по ref будет более результативной при выполнении различных проверок в указанном потоке, но методы расширения также имеют ссылку, такую как подпись, в том, что они являются статическими.
static bool IsValidSize(this Stream stream, long size)
bool IsValidSize(ref Stream stream, long size)
. Есть ли какие-либо функциональные или эксплуатационные различия между этими двумя сигнатурами метода?
Но вы не должны пропускать пар к методу расширения пара. Я думаю, вам нужно посетить документацию по каждому. – Paparazzi
Этот вопрос не имеет никакого смысла; Я думаю, вы не понимаете, что такое параметр ref. –
«Ref Parameter = Позволяет манипулировать параметром, который будет сохраняться вне блока методов» - на самом деле это то, что вы можете сделать с любым объектом ссылочного типа ** с ключевым словом 'ref' ** или без него. Ваше описание - это функциональность, которую вы получаете, если параметр является типом значения. Если это ссылочный тип, это будет ссылка на ссылку объекта, который является более тонким, чем ваш вопрос. –