44

私は現在、Daniel M. Solis による「Illustrated C# 2010」という本を読んでいます。本は言う:

「メソッドが呼び出されるか呼び出されると...」

これら2つの用語の違いは何ですか?

4

7 に答える 7

15

私の研究 (個人的および無給) から、これらの用語がプログラミング文献および「野生」で一般的に使用されている方法を調べたところ、これらの定義がそれらの使用法に適合しているように見えることがわかりました。

実行とは、コードを実行するプロセスを指します。正確な方法は問題ではなく、コンパイルできるかどうか、コンピューターで実行できるかどうかは関係ありません。

Applying/Applicationは、引数を関数にバインドすることを指します。アプリケーションは、部分的でも完全でもかまいません。関数型プログラミングの世界から言えば、部分適用はパラメータの少ない別の関数を生成し、完全適用はサンクを生成します。サンクはパラメーターのない関数であり、「遅延評価」に役立ちます。

呼び出し/呼び出しとは、完全にバインドされた引数を使用して、実行のために関数をスケジュールするために必要なプロセスを指します。このようなシステムには、スタックへの引数のプッシュ、PC の新しいアドレスへの転送、後で実行するためのキューへのメッセージ/オブジェクト/関数/サンクの配置、またはその他のさまざまな RPC システムが含まれます。正確なメカニズムは問題ではありません。将来の実行のためのスケジューリングの概念は重要です。呼び出しには、will 関数の実行が必要です。

呼び出しは、多くの中で最も定義されていません。通常、関数を完全に適用してから呼び出すという複合プロセスを指し、通常はコードが戻り値を待機するというセマンティックが追加されます。

また、これらの用語はすべて、記述中の現在のコードの観点から主観的なものであることに注意してください。RPC 呼び出しを介して関数を呼び出すことは、クライアント側から呼び出すだけです。サーバー側からは、関数がサーバー側の関数として「意味」を持っている場合でも、リクエストの呼び出しポイントは異なります。

于 2016-10-29T09:41:13.757 に答える
14

関数呼び出しとは、プログラム内で自分で関数を呼び出すことです。関数の呼び出しは、自動的に呼び出されるときです。

たとえば、次のプログラムを考えてみましょう。

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 が呼び出されます。

ソース: ウェブ

于 2013-08-29T08:11:11.673 に答える
2

メソッド呼び出しは、通常、メソッド (関数) を直接呼び出す際の問題や困難のために、メソッド (関数) を間接的に呼び出すことを指す用語です。

たとえば、並列プログラミングのコンテキストでは、1 つのアプリケーション空間内で 2 つのスレッドが並列に実行されているとします。別のスレッドに存在するオブジェクトのパブリック メソッドを呼び出すと、競合が発生する可能性があるため、クロス スレッド呼び出し例外がスローされます。解決策は、オブジェクトを呼び出してメソッドを実行し、残りのジョブをオブジェクトに渡して並列リクエストを管理することです。

別の例は、デリゲートがどこかのメソッドを指している場合です。デリゲートにその (不明な) メソッドを呼び出すように依頼すると、メソッドを呼び出して実行します。

于 2013-08-29T08:22:25.373 に答える
2

おそらく、彼は単に「呼び出す」と「呼び出す」という用語を同義語と考えており、両方の用語が実際に遭遇する可能性があるため、両方の用語に言及したいだけです。その場合、または使用することはできませんか?

于 2013-08-29T08:22:48.173 に答える
0

「呼び出す」とは、中間メカニズムを介して間接的にメソッドを呼び出すことを意味するようです。著者によって正確な意味がぼやけていると確信しています。しかし、彼らはメソッドを呼び出す別の方法を説明しようとしているに違いありません。

また、「呼び出す」の一般的な (コンピュータ以外の) 定義は、通常、より高い力に支援を求めることを意味します。これは、何かを成し遂げるために仲介エンティティに助けを求めることになります。

于 2019-08-07T14:03:52.883 に答える