С 2018 года существует гораздо более короткое и элегантное решение. Просто используйте. Array.prototype.sort () .
Пример:
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 13 },
{ name: 'Zeros', value: 37 }
];
// sort by value
items.sort(function (a, b) {
return a.value - b.value;
});
Короткий ответ: считайте мой статья о передаче параметров .
ответ Long: когда параметр ссылочного типа передается значением, только ссылка передается, не копия объекта. Это похоже на передачу указателя (значением) в C или C++. Изменения в значении самого параметра не будут замечены вызывающей стороной, но изменениями в объекте, который контрольные точки к будут быть замеченными.
, Когда параметр (любого вида) передается ссылка, которая означает, что любые изменения в параметре замечены вызывающей стороной - изменения в параметре изменения в переменной.
статья объясняет все это более подробно, конечно:)
Полезный ответ: Вы почти никогда не должны использовать касательно / [1 112]. Это - в основном способ получить другое возвращаемое значение и должно обычно избегаться точно, потому что это означает метод, вероятно, пытающийся сделать слишком много. Это не всегда имеет место (TryParse
, и т.д. канонические примеры разумного использования out
), но использующий касательно / должна быть относительная редкость.
Думайте некасательно параметра, как являющегося указателем, и касательно параметра как двойной указатель. Это помогло мне больше всего.
Вы почти никогда не должны проходить мимо значений касательно, Я подозреваю, что, если бы это не было для проблем interop, команда .NET никогда не включала бы его в исходную спецификацию. OO способ иметь дело с большей частью проблемы, которые касательно параметров решают, к:
Для нескольких возвращаемых значений
Для примитивов, которые изменяются в методе как результат вызова метода (метод имеет побочные эффекты на примитивных параметрах)
Вы могли, вероятно, записать все приложение C# и никогда не проходить мимо никаких объектов/структур касательно
, у меня был преподаватель, который сказал мне это:
единственное место Вы использовали бы судей, то, где Вы также:
- Хочу передать большой объект (т.е., объекты/структура имеют объекты/структуры в нем к нескольким уровням), и копирование его было бы дорогим, и
- Вы называете Платформу, Windows API или другой API, который требует его.
не делают этого просто, потому что Вы можете. Можно получить бит в заднице некоторыми противными ошибками, если Вы начинаете изменять значения в параметрическом усилителе и не обращаете внимание.
я соглашаюсь с его советом, и в моих пяти плюс годы начиная со школы, у меня никогда не было потребности в нем за пределами вызова Платформы или Windows API.
Так как received_s является массивом, Вы передаете указатель на тот массив. Функция управляет теми существующими данными на месте, не изменяя базовое местоположение или указатель. Касательно ключевого слова показывает, что Вы передаете фактический указатель на местоположение и обновляете тот указатель во внешней функции, таким образом, значение во внешней функции изменится.
, Например, массив байтов указатель на ту же память, прежде чем и после, память была просто обновлена.
ссылка Конечной точки на самом деле обновляет указатель на Конечную точку во внешней функции к новому экземпляру, сгенерированному в функции.
Думайте касательно как значение, что Вы передаете указатель ссылкой. Не используя касательно средств Вы передаете указатель значением.
Еще лучше, проигнорируйте то, что я просто сказал (это, вероятно, вводит в заблуждение, особенно с типами значения), и читайте страница .
This MSDN