この記事では主に C# における委任、イベント、非同期に関する関連知識を紹介します。非常に良い基準値を持っています。以下のエディターで見てみましょう
私が初めて C# プログラミングに触れてから約 1 年が経ちました。学習の過程では常に逆説的なことが多く、私もつい最近まで理解できませんでした。
この記事では、まず使用方法を紹介し、次に機能を評価します。
1. デリゲート
基本的な使用法:
1. デリゲートの型を宣言します。デリゲートは「クラス」のようなものです。デリゲートを宣言した後、この特性を持つ複数のデリゲートを作成できます。 (機能とは戻り値とパラメーターの型を指します)
public delegate void SomeKindOfDelegate(<a href="//m.sbmmt.com/wiki/57.html" target="_blank">string) <code>public delegate void SomeKindOfDelegate(<a href="//m.sbmmt.com/wiki/57.html" target="_blank">string</a> result);
2.创建一个在1中创建的委托类型的委托。
public SomeKindOfDelegate aDelegate;
3.为2中创建的具体的委托添加响应函数。响应函数必须符合1中的‘特征'。
aDelegate +=new SomeKindOfDelegate(aFunctionThatJustForDelegate); private void aFunctionThatJustForDelegate(string result) { MessageBox.Show(result); }
4.完成以上三步之后,就可以使用Invoke来对委托进行调用了。Invoke可以选择调用的目标函数,调用优先级,以及调用的参数。
aDelegate.BeginInvoke("Hello~I'm being invoked!", null, null);
上面是基本用法,除了这种基本用法之外,还可以结合var、匿名委托、lambda委托等方法。
完整代码:
namespace wtfIsDelegate { public delegate void SomeKindOfDelegate(string result); public partial class Form1 : Form { public event SomeKindOfDelegate aDelegate; public Form1() { InitializeComponent(); aDelegate +=new SomeKindOfDelegate(aFunctionThatJustForDelegate); aDelegate.BeginInvoke("Hello~I'm being invoked!", null, null); } private void btnDelegate_Click(object sender, EventArgs e) { } private void aFunctionThatJustForDelegate(string result) { MessageBox.Show(result); } } }
委托的用处:
委托的优点,是可以实现异步(BeginInvoke),还可以在某种需要同时调用多个同参数、返回值的情况下简化代码。
二、事件
基本用法:
1.定义委托。
public delegate void SomeKindOfDelegate(string result);
2.定义事件。
public event SomeKindOfDelegate aDelegate;
3.为事件添加响应函数。
process.Exited += new EventHandler(CmdProcess_Exited);
result);
2. 1.で作成したデリゲートタイプのデリゲートを作成します。
public SomeKindOfDelegate aDelegate;
3. 2 関数
process.Exited += new EventHandler(CmdProcess_Exited); // 注册进程结束事件 。
aDelegate.BeginInvoke("こんにちは〜呼び出されています!", null, null);
上記は基本的な使い方です。この基本的な使い方に加えて、var を組み合わせることができます。匿名委任、ラムダ委任、その他のメソッド。
完全なコード: 2. イベント 2. イベントを定義します。 説明: 以上がC# での委任、イベント、非同期の使用法についての簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。public delegate void DataReceivedEventHandler(object sender, DataReceivedEventArgs e);
委任の使用: 委任の利点は、非同期 (BeginInvoke) を実装できることです。また、複数の同じパラメータと戻り値が必要な特定の状況ではコードを簡素化することもできます。同時に呼び出されます。
public delegate void SomeKindOfDelegate(string result);
public event SomeKindOfDelegate aDelegate;
3. イベントに応答関数を追加します。
process.Exited += new EventHandler(CmdProcess_Exited);
4. イベントのトリガー (呼び出し) メソッドを指定します。 ([トリガーせずに直接呼び出すこともできます])