.net 3.5 では Linq 式とラムダ式が導入されているため、デリゲートの作成がよりシンプルかつエレガントになります。
ラムダ式の導入後は、匿名メソッドを使用する必要がなくなり、デリゲートの作成方法がよりシンプルかつエレガントになりました。 実際、ラムダ式を最初に導入すると、匿名メソッドは存在しません。
ラムダ式は、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 サイトの他の関連記事を参照してください。