Если вы не используете ключевое слово ref
, то передаваемый параметр является новой ссылкой на тот же объект. В некотором смысле он «передается по ссылке», но вы должны думать об этом немного по-другому.
Другие ответы верны, OrderBy
не работает на месте и вместо этого возвращает упорядоченную коллекцию. Но если вы установите свой параметр на результат, то вы измените значение параметра (ссылку), чтобы оно указывало на новую коллекцию, а не изменило сам базовый объект.
Например,
theList = thisList.OrderBy(obj => obj.ID).ToList();
принимает theList
, заказывает его, а затем создает новый список. Затем значение theList
, которое является ссылкой на список, изменяется, чтобы указывать на вновь созданный (упорядоченный) список. Исходная ссылка, созданная вне этого метода, по-прежнему указывает на исходный неупорядоченный список.
Причина в том, что всякий раз, когда вы звоните .ToList()
, вы фактически создаете новый список. Когда вы используете ключевое слово ref
, вы передаете фактическую переменную, содержащую ссылку, в список, а не создаете новую ссылку на этот же список.