Являются ли вызов по значению и передача по значению синонимами?

Я всегда думал, что вызов по значению и передача по значению являются синонимами. Однако недавно я слышал, что кто-то относится к ним так, как будто они разные. Это одно и то же?

Я также говорю об их соответствующих терминах ссылки.

5 ответов

Решение

Они синонимы.

"call" означает метод, а "pass" означает (и) аргумент (ы).

Пример:

  1. аргумент #1 был передан по значению / ссылке.
  2. аргументы были переданы по значению.
  3. метод используется в контексте вызова по значению.

"Кто-то" не так. Проверьте статью в Википедии, которая прямо отвечает на ваш вопрос. Вы также можете указать на этого "кого-то" в этой статье:

Оценка по значению (также называемая передачей по значению) является наиболее распространенной стратегией оценки, ...

Они являются синонимами. Термин " вызов по значению" означает то же самое, что и " передача по значению".

Тем не менее, я предпочитаю форму передачи по значению, поскольку передается параметр, к которому она относится. Вызов может иметь параметры, которые передаются по значению, а также параметры, передаваемые по ссылке.

Пример:

public void Something(string name, int count, ref string target, ref int result)

Первый параметр - это ссылка, переданная по значению, второй - значение, переданное по значению, третий - ссылка, переданная по ссылке, и четвертый - это значение, переданное по ссылке.

Я всегда считал их синонимами, но когда я думаю об этом, возможно, они пытаются различить прямой вызов метода и вызов метода через ссылку (т. Е. Делегат). То есть, учитывая это:

public delegate void MyDelegate();

class MyClass
{
    public void DoSomething()
    {
        // ...
    }
}

MyClass thing = new MyClass();

Они пытаются сказать это, если вы напишите:

thing.DoSomething();

Тогда это "вызов по значению", но если вы напишите:

MyDelegate dlgt = thing.DoSomething;
dlgt();  // calls thing.DoSomething through the delegate reference

тогда это "звонок по ссылке?"

Да, эти термины, как я понимаю, являются синонимами.

Тем не менее, я думаю, что вы спрашиваете не ту аудиторию. Если ваш коллега расценивает их как разные, то у вас и у них несоответствие понимания. Независимо от того, считаю ли я их одинаковыми, не имеет значения, что на самом деле имеет в виду ваш коллега.

Другие вопросы по тегам