2011-01-08 8 views
4

私はStackoverflowに同様のタイプの質問がたくさんあることを知っています。また、デリゲートとその仕組みを知っていますが、インタビューでデリゲートを説明するのが少し難しい場合もあります。説明する?インタビューでデリゲートを説明する方法

+11

デリゲートを本当に理解していれば、インタビューで説明するのに問題はありません。私は勉強を勧めます。 – Oded

+1

また、インタビューのために、デリゲートとイベントの違いは何かを覚えておく必要があります。 – Kuncevic

答えて

5

本質的に強く型付けされた関数ポインタです。これはメソッドパラメータとして任意のコードを渡す方法です。

+7

_strongly typed_関数ポインタ。 – Oded

+0

あなたのために+1、良い修正。 – Paul

+0

本当に重要な部分は、関数ポインタだけでなく、第1引数(通常はthis)もバインドされていることです。それ以外の場合、インスタンスメソッドでは動作しません。 – CodesInChaos

2

デリゲートは、メソッドを参照できるC#言語要素です。

1

実際のライブアナロジーを使用するとどうなりますか?

http://www.wordreference.com/definition/delegate

別の人への委託(タスクや責任)(この場合は方法になります)。

単語の計算では、同じ方法でこれを説明することができます。デリゲートをメソッドに渡すと、メソッドの実装についてはわかりません。単にそのメソッドへの参照であり、デリゲートはそれを実行します。

2

私は、デリゲート聞いたいくつかの方法が記載されている:ファーストクラスの機能のための

  • 言語とフレームワークをサポート。
  • シングルメソッドインターフェイス。
  • 型セーフな関数ポインタ。
  • 明確に定義された契約を持つ一連の操作を表すオブジェクト。

詳細について精査した場合、私は希望:

  • System.Delegateを区別するには、種類、デリゲート型の変数インスタンスを delegate-をdelegate-。彼らの宣言、譲渡、渡し、呼び出しについて詳しく述べる。
  • 不変の参照型の性質を強調します。
  • マルチキャストの代理人について説明します。
  • フレームワーク内のいくつかの一般的なデリゲートタイプ、特にFunc <>およびアクション<>ファミリを挙げてください。
  • メソッドグループ、匿名メソッド、ラムダ式、およびクロージャを使用して、代理人を代行します。 C#でのdelegateキーワードの使用方法と、コンパイラによってプログラマに与えられたさまざまな礼儀を説明してください。
  • スレッド、イベント、式ツリーおよびLINQとの関係について説明します。
  • 議論:
    • 高階関数 - デリゲートが反射で使用することができますどのようにカリー化、コンビネータなど
    • を。
    • 代理人に関する差異。
0

これはメソッドのシグネチャをカプセル化し、関数ポインタを使用せずにオブジェクトとしての機能を治療するための型セーフな、オブジェクト指向のメカニズムを提供するエンティティです。

関連する問題