Являются ли вызов по значению и передача по значению синонимами?
Я всегда думал, что вызов по значению и передача по значению являются синонимами. Однако недавно я слышал, что кто-то относится к ним так, как будто они разные. Это одно и то же?
Я также говорю об их соответствующих терминах ссылки.
5 ответов
Они синонимы.
"call" означает метод, а "pass" означает (и) аргумент (ы).
Пример:
- аргумент #1 был передан по значению / ссылке.
- аргументы были переданы по значению.
- метод используется в контексте вызова по значению.
"Кто-то" не так. Проверьте статью в Википедии, которая прямо отвечает на ваш вопрос. Вы также можете указать на этого "кого-то" в этой статье:
Оценка по значению (также называемая передачей по значению) является наиболее распространенной стратегией оценки, ...
Они являются синонимами. Термин " вызов по значению" означает то же самое, что и " передача по значению".
Тем не менее, я предпочитаю форму передачи по значению, поскольку передается параметр, к которому она относится. Вызов может иметь параметры, которые передаются по значению, а также параметры, передаваемые по ссылке.
Пример:
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
тогда это "звонок по ссылке?"
Да, эти термины, как я понимаю, являются синонимами.
Тем не менее, я думаю, что вы спрашиваете не ту аудиторию. Если ваш коллега расценивает их как разные, то у вас и у них несоответствие понимания. Независимо от того, считаю ли я их одинаковыми, не имеет значения, что на самом деле имеет в виду ваш коллега.