我一直认为按值调用和按值传递是同义词。然而,我最近听到有人提到他们,好像他们是不同的。它们是一样的吗?
我也在谈论他们相应的参考术语。
我一直认为按值调用和按值传递是同义词。然而,我最近听到有人提到他们,好像他们是不同的。它们是一样的吗?
我也在谈论他们相应的参考术语。
“某人”是错误的。查看直接回答您问题的维基百科文章。您也可以在本文中指出某个“某人”:
Call-by-value评估(也称为pass-by-value)是最常见的评估策略,...
它们是同义词。
“调用”表示方法,“传递”表示一个(该)参数。
例子:
是的,这些术语是我理解的同义词。
但是,我认为您问错了听众。如果您的同事认为他们不同,那么您和他们的理解不匹配。我是否认为它们相同无关紧要,重要的是您的同事的实际意思。
它们是同义词。术语call-by-value 的含义与pass-by-value完全相同。
但是,我更喜欢按值传递的形式,因为它是传递它所引用的参数。调用可以具有按值传递的参数以及按引用传递的参数。
例子:
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
那么这是一个“通过引用调用?”