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