我正在读Daniel M. Solis的一本名为"Illustrated C#2010"的书.这本书说:
"当调用或调用方法时......"
这两个术语有什么区别?
函数调用是指您在程序中自己调用函数.函数调用是在自动调用时.
例如,考虑这个程序:
struct s
{
int a,b,s;
s()
{
a=2;
b=3;
}
void sum()
{
s=a+b;
}
};
void main()
{
struct s obj; //line 1
obj.sum(); // line 2
}
Run Code Online (Sandbox Code Playgroud)
这里,当执行第1行时,调用函数(构造函数,即s).执行第2行时,将调用函数sum.
来源:网络
方法调用是一个术语,通常指由于直接调用方法(函数)时出现问题或困难而间接调用方法(函数)。
例如,在并行编程的上下文中:考虑一个应用程序空间内的两个线程并行运行。调用驻留在另一个线程上的对象的公共方法会引发跨线程调用异常,因为可能会发生竞争。解决方案是调用对象来执行方法,并将剩余的作业交给对象来管理并行请求。
另一个例子是当你有一个委托指向某个地方的方法时。当您要求委托调用该(未知)方法时,您调用该方法来运行。
通过我的研究(个人和无酬),查看这些术语在编程文献中和“野外”使用的常见方式,我发现这些定义似乎符合它们的用法。
执行是指运行代码的过程。确切方法无关紧要,是否可以编译,是否可以由计算机完成。
Applying / Application是将参数绑定到函数。申请可以是部分的,也可以是完整的。从函数式编程世界来看,部分应用程序生成具有较少参数的另一个函数,而完整应用程序则产生大量变化。Thunk是没有参数的函数,可以帮助进行“延迟评估”。
调用/调用是指安排功能(带有其完全绑定的参数)以执行所需的过程。这样的系统包括将参数推送到堆栈上,并将PC转移到新地址,将消息/对象/功能/主题在队列中放置,以供以后执行或其他各种RPC系统使用。确切的机制并不重要。计划将来执行的概念很重要。调用需要执行will函数。
呼叫是定义最少的。通常指的是完全应用功能然后调用它的组合过程,通常带有代码将等待返回值的附加语义。
还请注意,从所编写的当前代码的角度来看,所有这些术语都是主观的。通过RPC调用调用功能仅是从客户端调用它。从服务器端,如果函数甚至在服务器端具有任何“含义”,则请求具有不同的调用点。