C#體貼之處點滴 – extention method, lambda expression, anonymous method

來源:互聯網
上載者:User

說的是C#如何體貼程式員,而非.NET Framework。

 

這是C#對Delegate相關領域下的精微功夫:    
List<Product> products = Product.GetSampleProducts();
foreach (Product product in products.OrderBy(p => p.Name))    //entention method
{
  Console.WriteLine (product);
}

 

上面的代碼等價於下面的,如何,C#體貼不?
List<Product> products = Product.GetSampleProducts();
products.Sort((x, y) => x.Name.CompareTo(y.Name));   //lambda expression
foreach (Product product in products)
{
  Console.WriteLine(product);
}

 

上面的代碼等價於下面的,如何,C#體貼不?
List<Product> products = Product.GetSampleProducts();
products.Sort(delegate(Product x, Product y)  //anonymous method
{

  return x.Name.CompareTo(y.Name); }
);
foreach (Product product in products)
{
  Console.WriteLine(product);
}

 

上面的代碼邏輯上等價於下面的,如何,C#體貼不?
class ProductNameComparer : IComparer<Product>  //裸奔流?
{
  public int Compare(Product x, Product y)
  {
    return x.Name.CompareTo(y.Name);
  }
}
...
List<Product> products = Product.GetSampleProducts();
products.Sort(new ProductNameComparer());
foreach (Product product in products)
{
  Console.WriteLine(product);
}

 

最後,附上LINQ Query的代碼,相信無人不知,不過為了文氣的完整,得羅嗦一下,好在這樣的代碼實在太養眼了。

List<Product> products = Product.GetSampleProducts();
var sorted =  from p in products     //體貼不?
        orderby p.Name
          select p;
foreach (Product product in sorted)
{
  Console.WriteLine(product);
}

 

(按:code source from <<C# in Depth>> 2nd.Edition Jon Skeet)

說的是C#如何體貼程式員,而非.NET Framework。

 

這是C#對Delegate相關領域下的精微功夫:    
List<Product> products = Product.GetSampleProducts();
foreach (Product product in products.OrderBy(p => p.Name))    //entention method
{
  Console.WriteLine (product);
}

 

上面的代碼等價於下面的,如何,C#體貼不?
List<Product> products = Product.GetSampleProducts();
products.Sort((x, y) => x.Name.CompareTo(y.Name));   //lambda expression
foreach (Product product in products)
{
  Console.WriteLine(product);
}

 

上面的代碼等價於下面的,如何,C#體貼不?
List<Product> products = Product.GetSampleProducts();
products.Sort(delegate(Product x, Product y)  //anonymous method
{

  return x.Name.CompareTo(y.Name); }
);
foreach (Product product in products)
{
  Console.WriteLine(product);
}

 

上面的代碼邏輯上等價於下面的,如何,C#體貼不?
class ProductNameComparer : IComparer<Product>  //裸奔流?
{
  public int Compare(Product x, Product y)
  {
    return x.Name.CompareTo(y.Name);
  }
}
...
List<Product> products = Product.GetSampleProducts();
products.Sort(new ProductNameComparer());
foreach (Product product in products)
{
  Console.WriteLine(product);
}

 

最後,附上LINQ Query的代碼,相信無人不知,不過為了文氣的完整,得羅嗦一下,好在這樣的代碼實在太養眼了。

List<Product> products = Product.GetSampleProducts();
var sorted =  from p in products     //體貼不?
        orderby p.Name
          select p;
foreach (Product product in sorted)
{
  Console.WriteLine(product);
}

 

(按:code source from <<C# in Depth>> 2nd.Edition Jon Skeet)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.