我目前正在阅读 Daniel M. Solis 的一本书,名为“Illustrated C# 2010”。书上说:
“当调用或调用方法时......”
这两个术语有什么区别?
我目前正在阅读 Daniel M. Solis 的一本书,名为“Illustrated C# 2010”。书上说:
“当调用或调用方法时......”
这两个术语有什么区别?
根据我的研究(个人和无偿),查看这些术语在编程文献和“野外”中的常用方式,我发现这些定义似乎符合它们的用法。
执行是指运行代码的过程。确切的方法无所谓,能不能编译,能不能用电脑做。
Applying/Application是指将参数绑定到函数。申请可以是部分的也可以是完整的。从函数式编程世界来看,部分应用程序会产生另一个参数较少的函数,而完整的应用程序会产生一个 thunk。Thunks 是没有参数的函数,可以帮助“惰性求值”。
调用/调用是指调度函数及其完全绑定的参数执行所需的过程。此类系统包括将参数推入堆栈并将 PC 转移到新地址,将消息/对象/函数/thunk 放在队列中以供稍后执行或各种其他 RPC 系统。确切的机制并不重要。未来执行的调度概念很重要。调用要求 will 函数执行。
跟注是最不明确的。通常是指完全应用函数然后调用它的组合过程,通常带有您的代码将等待返回值的附加语义。
另请注意,从正在编写的当前代码的角度来看,所有这些术语都是主观的。通过 RPC 调用调用函数只是从客户端调用它。从服务器端来看,请求具有不同的调用点,如果该函数甚至作为服务器端的函数具有任何“意义”的话。
函数调用是指您自己在程序中调用函数。而函数调用是它被自动调用的时候。
例如,考虑这个程序:
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
}
这里,当执行第 1 行时,函数(构造函数,即 s)被调用。执行第 2 行时,调用函数 sum。
来源:网络
方法调用是一个术语,通常指的是由于直接调用存在问题或困难而间接调用方法(函数)。
例如在并行编程的上下文中:考虑一个应用程序空间内的两个线程并行运行。调用驻留在另一个线程上的对象的公共方法会引发跨线程调用异常,因为可能会发生竞争。解决方案是调用对象来执行方法,并将剩余的作业交给对象来管理并行请求。
另一个例子是当你有一个委托指向某处的方法时。当您要求委托调用该(未知)方法时,您调用该方法以运行。
也许他只是认为“call”和“invoke”这两个词是同义词,而只想提到这两个词,因为这两个词都可以在野外遇到。在那种情况下不能使用吗?
当您在代码中直接执行该方法时,它称为Calling。当其他人为您执行它时,它是Invoking。这是我从Control.Invoke
方法上理解的。
“调用”似乎意味着通过中介机制间接调用方法。我敢肯定作者模糊了确切的含义。但是,他们必须尝试描述调用方法的不同方式,否则该术语一开始就不会出现。
此外,“调用”的一般(非计算机)定义通常意味着呼唤更高的权力寻求帮助。这将转化为向中介实体寻求帮助以完成某事。
简单的“调用”是保证方法将被采用 “调用”是当我们只是要求方法将在适当的时间被采用
例如,主线程 (GUI) 可以通过调用来修改控件,但是当您有另一个线程想要修改控件时,它只需在主线程准备好时要求主线程执行此操作