"call"和"invoke"之间有什么区别?

Joh*_*ith 37 c# terminology

我正在读Daniel M. Solis的一本名为"Illustrated C#2010"的书.这本书说:

"当调用或调用方法时......"

这两个术语有什么区别?

Dee*_*rma 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
}
Run Code Online (Sandbox Code Playgroud)

这里,当执行第1行时,调用函数(构造函数,即s).执行第2行时,将调用函数sum.

来源:网络

  • @JeppeStigNielsen来吧,这不是为了证明阅读代码.它只是为了理解两者之间的区别.我希望OP可能已经明白了. (5认同)
  • @JeppeStigNielsen看到每当我们创建一个对象时,它的构造函数都会被自动调用,而process被称为调用.在你的情况下,调用构造函数称为调用.和构造函数也是一种方法.所以我想我没有逃避这个话题.我唯一没做的就是发布ac#代码. (4认同)
  • 您的示例是非法的。struct无法显式声明无参数实例构造函数。字段(或其他类型成员)的名称不能与包含类型的名称相同。使用`struct`,必须在控件离开构造函数之前明确分配所有实例字段。您的“第1行”中的语法完全无效。这应该是C#。 (2认同)

Ali*_*eza 5

方法调用是一个术语,通常指由于直接调用方法(函数)时出现问题或困难而间接调用方法(函数)。

例如,在并行编程的上下文中:考虑一个应用程序空间内的两个线程并行运行。调用驻留在另一个线程上的对象的公共方法会引发跨线程调用异常,因为可能会发生竞争。解决方案是调用对象来执行方法,并将剩余的作业交给对象来管理并行请求。

另一个例子是当你有一个委托指向某个地方的方法时。当您要求委托调用该(未知)方法时,您调用该方法来运行。


Ben*_*del 5

通过我的研究(个人和无酬),查看这些术语在编程文献中和“野外”使用的常见方式,我发现这些定义似乎符合它们的用法。

执行是指运行代码的过程。确切方法无关紧要,是否可以编译,是否可以由计算机完成。

Applying / Application是将参数绑定到函数。申请可以是部分的,也可以是完整的。从函数式编程世界来看,部分应用程序生成具有较少参数的另一个函数,而完整应用程序则产生大量变化。Thunk是没有参数的函数,可以帮助进行“延迟评估”。

调用/调用是指安排功能(带有其完全绑定的参数)以执行所需的过程。这样的系统包括将参数推送到堆栈上,并将PC转移到新地址,将消息/对象/功能/主题在队列中放置,以供以后执行或其他各种RPC系统使用。确切的机制并不重要。计划将来执行的概念很重要。调用需要执行will函数。

呼叫是定义最少的。通常指的是完全应用功能然后调用它的组合过程,通常带有代码将等待返回值的附加语义。

还请注意,从所编写的当前代码的角度来看,所有这些术语都是主观的。通过RPC调用调用功能仅是从客户端调用它。从服务器端,如果函数甚至在服务器端具有任何“含义”,则请求具有不同的调用点。