C#での新しい特性の学習:Delegate、匿名メソッド、lambda式

1934 ワード

最近、ある項目のコードを修正する際に、lambda式の書き方を使いました.ついでに勉強してみましたが、lambdaが匿名の方法を明らかにしなければならないことを発見しました.匿名の方法を明らかにするにはDelegateを明らかにしなければなりません.Delegateを明らかにするにはC++のポインタを理解しなければなりません.
1、Delegate
public delegate void MyDelegate(string message);
public class TestClass
{
 public void HelloDelegate(string message,MyDelegate md)
 {
  if (md!=null)
  {
   md(message);
  }
 }
}


private void button4_Click(object sender, EventArgs e)
{
 TestClass tc = new TestClass();
 tc.HelloDelegate("hello delegate", HelloDelegate);
}

public void HelloDelegate(string message)
{
 MessageBox.Show(message);
}

2、匿名方法:
TestClass tc = new TestClass();
tc.HelloDelegate("hello anonymous method", delegate(string name) 
{
	MessageBox.Show(name);
});

3、Lambda式:
TestClass tc = new TestClass();
tc.HelloDelegate("hello lambda", n => MessageBox.Show(n));

実はコードを比較すると、匿名の方法はエージェントの書き方を簡略化しただけで、lambdaは匿名の方法の書き方を簡略化しただけで、もちろん、これはlambdaの応用にすぎず、lambdaの集合面での応用も便利で、後で皆さんと共有します.
テストコードを書いていると、lambda、匿名メソッド、暗黙タイプ、オブジェクトイニシエータなどのC#の新しい特性がjavascriptの文法に似ていることがわかり、ネット上の文章を検索してみると、本当にこの説があります.
原文を引用します.
C#履歴の回顧
C#の発展の歴史を振り返ると、C#1.0は完全にJavaを模倣し、structのようなC/C++のいくつかの特性を残しており、新しい学者は簡単に手に入れることができる.C#2.0は汎用型を加え、Java 1とも加わった.5の汎用型は同じです.C#3.0には文法糖が山積みになっており、CLRを修正せずにLinqを導入した.まるで神来の筆で、多くのプロジェクトは様々な性能などの理由で採用されていないが、小型プログラムの迅速な開発に非常に適しており、プログラマーの作業量を軽減し、コードの可読性を高めた.C#4.0は動的言語の特性を増やし、javascript、pythonなどの動的言語の影がたくさん見えます.静的言語の道はますますずれているが,別の観点から言えば,これらの特性もプログラマーの生産性を高めるためである.受け入れられるかどうかは、時間をかけて話しましょう.
参照先:http://developer.51cto.com/art/200908/143718.htm
とにかく、収穫は小さくなくて、興味のある友达がお互いに交流することを望んでいます.