ホームページ  >  記事  >  バックエンド開発  >  .net 3.5 のデリゲート インスタンスについて

.net 3.5 のデリゲート インスタンスについて

零下一度
零下一度オリジナル
2017-06-23 16:05:191511ブラウズ

.net 3.5 では Linq 式とラムダ式が導入されているため、デリゲートの作成がよりシンプルかつエレガントになります。

.net 3.5 デリゲート

ラムダ式の導入後は、匿名メソッドを使用する必要がなくなり、デリゲートの作成方法がよりシンプルかつエレガントになりました。 実際、ラムダ式を最初に導入すると、匿名メソッドは存在しません。

ラムダ式は、C# で「arg-list => expr-body」として記述されます。「=>」記号の左側は式のパラメータリストであり、右側は式の本体です。体)。パラメータ リストには、カンマで区切られた 0 個以上のパラメータを含めることができます。

 1 namespace DelegateDemo 2 { 3     //声明委托 4     public delegate void MyDel(string arg1, string arg2); 5  6     class Program 7     { 8         static void Main(string[] args) 9         {10             //.net 3.5中的委托11 12             //创建委托,使用lambda表达式代替匿名方法13             MyDel myDel = (string arg1, string arg2) =>14             {15                 Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));16             };17 18             //调用委托19             myDel("aaa", "bbb");20 21             Console.ReadKey();22         }23     }24 }

パラメータ型の省略

コンパイラはデリゲート宣言からデリゲートパラメータの型を知ることができるため(この機能は型推論と呼ばれます)、パラメータ型を省略できるため、コードが簡素化されます。次のように。

1 //创建委托,使用lambda表达式代替匿名方法2 MyDel myDel = (arg1, arg2) =>3 {4     Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));5 };

パラメータが 1 つだけの場合は、パラメータ タイプを囲む括弧を省略することもできます。

ステートメントを使用して式を置き換える

ラムダ式では式の本体をステートメントまたはステートメント ブロックにすることができるため、式本体にステートメントが 1 つしかない場合は、ステートメント ブロックをステートメントに置き換えて単純化を続けることができます。次のコード:

1 //创建委托,使用lambda表达式代替匿名方法2 MyDel myDel = (arg1, arg2) => Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));

以上が.net 3.5 のデリゲート インスタンスについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。