基礎こそ重中の重~委託例のいくつかの定義方式(規則モーメントmethod,論理単純delegate,階層明瞭lambda
9667 ワード
カタログに戻る
依頼、1つの悪くないもの、.netの中の依頼はとてもさわやかで、その重要性はマイクロソフトがそれを単に出して、いくつかの既成の依頼を定義して、例えば、FuncとAction、人が最も特殊な依頼の署名を出した以上、私达は
自分で定義して、FuncとActionで依頼して彼らの実例をどのように定義するかを話しましょう、ほほほ.
第一規則モーメント定義方法method
第2の論理単純匿名メソッドdelegate
メソッドロジックが簡単な場合、匿名メソッドを直接使用するには、追加のメソッドを定義する必要はありません.
第3階層明瞭lambda
同じロジックは简単で、lambda式を使うとコードの階層感をもっとはっきりさせることができて、私はとても推荐して、ほほほ
実際、マイクロソフト自身のクラスライブラリも、このようなlambda方式をよく使用しており、新しい技術が登場するたびに、マイクロ自身が先に試してみましょう.
上の私はただ1つの简単な例で、実际に开発する时、また情况によって决めて、以下はプロジェクトの中の1つのアプリケーションを実现して、ユーザーが登录する时、1つのLogOn事件をトリガして、それから、その方法を購読してすべて自动的に自分の
論理、コードを見る:
システムにログインするときに何かをしたい場合は、まず購読すればいいです.
カタログに戻る
依頼、1つの悪くないもの、.netの中の依頼はとてもさわやかで、その重要性はマイクロソフトがそれを単に出して、いくつかの既成の依頼を定義して、例えば、FuncとAction、人が最も特殊な依頼の署名を出した以上、私达は
自分で定義して、FuncとActionで依頼して彼らの実例をどのように定義するかを話しましょう、ほほほ.
第一規則モーメント定義方法method
1 /// <summary>
2 /// Func<string>
3 /// </summary>
4 /// <returns></returns>
5 static string StandardFunc() { return " "; }
6 Func<string> Standard = new Func<string>(StandardFunc);//
第2の論理単純匿名メソッドdelegate
メソッドロジックが簡単な場合、匿名メソッドを直接使用するには、追加のメソッドを定義する必要はありません.
1 Func<string, bool> FuncWhat2 = delegate(string s) { return s == "hello"; };//delegate ,
1 Func<bool> FuncWhat3 = delegate() { return true; };
第3階層明瞭lambda
同じロジックは简単で、lambda式を使うとコードの階層感をもっとはっきりさせることができて、私はとても推荐して、ほほほ
1 Func<string, string> FuncWhat4 = (string msg) => hello(msg);
実際、マイクロソフト自身のクラスライブラリも、このようなlambda方式をよく使用しており、新しい技術が登場するたびに、マイクロ自身が先に試してみましょう.
1 //
2 // :
3 // , System.ComponentModel.DataAnnotations.ValidationAttribute
4 // 。
5 //
6 // :
7 // errorMessageAccessor:
8 // 。
9 //
10 // :
11 // System:ArgumentNullException:
12 // errorMessageAccessor null。
13 protected ValidationAttribute(Func<string> errorMessageAccessor);
上の私はただ1つの简単な例で、実际に开発する时、また情况によって决めて、以下はプロジェクトの中の1つのアプリケーションを実现して、ユーザーが登录する时、1つのLogOn事件をトリガして、それから、その方法を購読してすべて自动的に自分の
論理、コードを見る:
1 /// <summary>
2 ///
3 /// </summary>
4 public class LogOnEvent
5 {
6
7 /// <summary>
8 ///
9 /// </summary>
10 public static event Action LogOnAfter;
11
12 /// <summary>
13 /// RegisterAfter ( )
14 /// </summary>
15 internal static void OnLogOnAfter()
16 {
17 if (LogOnAfter != null)
18 {
19 LogOnAfter();
20 }
21 }
22
23 }
システムにログインするときに何かをしたい場合は、まず購読すればいいです.
1 //lambda
2 LogOnEvent.LogOnAfter += () =>
3 {
4 //
5 };
6 //
7 LogOnEvent.LogOnAfter += delegate()
8 {
9 //
10 };
11 //
12 LogOnEvent.LogOnAfter += LogDiary;
カタログに戻る