• 快速预览:C# 3.0的新东西


    Lambda 表达式:

    Func<string, string> doubleAppend= x => x + x;
    Console.WriteLine (doubleAppend(“test”)); // testtest

    LINQ 查询:

    string[] names = { "Tom", "Dick", "Harry" };
    IEnumerable<string> filteredNames =
      Enumerable.Where (names, n => n.Length >= 4);    // 字符长度大于等于4的名字

    扩展方法:

    string[] names = { "Tom", "Dick", "Harry" };
    IEnumerable<string> filteredNames = names.Where (n => n.Length >= 4);

     隐式类型的局部变量:

    var filteredNames = names.Where (n => n.Length == 4);

    查询理解语法:

    var filteredNames = from n in names where n.Length >= 4 select n;

    匿名类型:

    var query = from n in names where n.Length >= 4
                select new {
                             Name = n,
                             Length = n.Length
                           };
    var dude = new { Name = "Bob", Age = 20 };

    隐藏类型的数组:

    var dudes = new[]
    {
       new { Name = "Bob", Age = 20 },
       new { Name = "Rob", Age = 30 }
    };

    对象初始化:

    class Bunny
    {
    public string Name;
    public bool LikesCarrots;
    public bool LikesHumans;
    }

    // C# 3.0
    Bunny b1 = new Bunny { Name="Bo", LikesCarrots=true, LikesHumans=false };
    
    // C# 2.0
    Bunny b2 = new Bunny();
    b2.Name = "Bo";
    b2.LikesHumans = false;

    自动的属性:

    public class Stock
    {
      // C# 3.0:
                  public decimal X { get; set; }
    
      // C# 2.0:
                  private decimal y;
                  public decimal Y
                  {
                    get { return y;  }
                    set { y = value; }
                  }
    }

    Partial 方法:

    // PaymentFormGen.cs — auto-generated
    partial class PaymentForm
    {
      ...
      partial void ValidatePayment (decimal amount);
    }
    
    // PaymentForm.cs — hand-authored
    partial class PaymentForm
    {
      ...
      partial void ValidatePayment (decimal amount)
      {
        if (amount > 100)
          ...
      }
    }

    表达式树:

    Expression<Func<string, bool>> predicate = s => s.Length > 10;
    Func<string, bool> fun = predicate.Compile();
    Console.WriteLine(fun("test").ToString());

  • 相关阅读:
    开发管理工具(日常)
    python之uWSGI和WSGI
    php之Opcache
    nginx之健康检查
    重构糟糕的代码(一)
    PHP之50个开源项目
    Redis之各版本特性
    Redis之淘汰策略
    Redis之过期策略
    高并发之nginx限制
  • 原文地址:https://www.cnblogs.com/yangzhenping/p/3344887.html
Copyright © 2020-2023  润新知