List<WebClient> clients = new List<WebClient>();
   clients.ForEach(c => c.DownloadDataCompleted -= client_DownloadDataCompleted);
   clients.ForEach(c => c.CancelAsync());
    clients.Clear();
问题是c => c.DownloadDataCompleted 中的c是如何声明、=>是什么意思如何使用

解决方案 »

  1.   

    lambda表达式
    http://msdn.microsoft.com/zh-cn/library/bwabdf9z(VS.85).aspx
      

  2.   

    C#3.0新特性,匿名方法的表示形式c代表方法的参数, => 右边是方法的实现,合起来就是一个匿名方法。
      

  3.   

    c就是clients 中的每一个元素,不用单独声明
      

  4.   

    List<WebClient> clients = new List<WebClient>();
      clients.ForEach(c => c.DownloadDataCompleted -= client_DownloadDataCompleted);
      clients.ForEach(c => c.CancelAsync());
      clients.Clear();
    ===========
    你的这几句可以写成这样:
    foreach(WebClient c in clients )
    {
      c.DownloadDataCompleted -= client_DownloadDataCompleted;
      c.CancelAsync()
    } clients.Clear();
      

  5.   

    举个最简单的例子吧,比如我们添加事件响应的时候会这样:
    textEdit1.Leave += new EventHandler(textEdit1_Leave);void textEdit1_Leave(object sender, EventArgs e)
    {
         MessageBox.Show(textEdit1.Text);
    }如果用匿名方法,可以简写成:
    textEdit1.Leave += (sender1,e1) => MessageBox.Show(textEdit1.Text);
      

  6.   

    委托 匿名方法, c =>{} // c为参数,{}方法体,一条语句可省略{};