• 这篇文章不错,《C#,语言的变迁》


    这篇文章不错,《C#,语言的变迁》

     

    http://www.cnblogs.com/anytao/archive/2009/05/08/must_net_29.html

     

    其中的看点:

     

     

    看点1:

    ========

    以最简单的交换数据为例,我们来了解泛型带来的好处:

    // Release : code01, 2009/05/07
    // Author  : Anytao, http://www.anytao.com
    public static void Swap(ref int x, ref int y)
    {
    int temp = x;
    x = y;
    y = temp;
    }
    public static void Swap(ref string str1, ref string str2)
    {
    string temp = str1;
    str1 = str2;
    str2 = temp;
    }

    以上两种算法分别实现了对整型、字符串型数据的交换,在泛型引入之前实现相同的交换算法需要分别为所有的类型构建相似的处理逻辑,这显然是一种代码上的浪费,而泛型特性彻底解决了这一问题:

    // Release : code02, 2009/05/07
    // Author  : Anytao, http://www.anytao.com
    public static void Swap<T>(ref T t1, ref T t2)
    {
    T temp = t1;
    t1 = t2;
    t2 = temp;
    }
    
    
    
    
    看点2:
    =============

     

     

    以对象初始化器为例,在2.0时初始化对象成员,我们以这种方式实现:

    User user = new User();
    user.Name = "小王";
    user.Age = 28;

    在3.0中,实现对象初始化有了更好的解决方案,由对象初始化器来完成:

    User user = new User { Name = "小王", Age = 28 };

    同样的方式可以用来实现集合的初始化和隐式类型的初始化等。

    接着,我们再来了解一下自动属性带来的语法魅力,在3.0之前进行属性封装的是一件麻烦的事情,例如:

    // Release : code03, 2009/05/07
    // Author  : Anytao, http://www.anytao.com
    class User
    {
    private string name;
    public string Name
    {
    get { return name; }
    }
    private int age;
    public int Age
    {
    get { return age; }
    set { age = value; }
    }
    }

    而自动属性将这一切化简为无形,语法简单而功能依旧:

    // Release : code04, 2009/05/07
    // Author  : Anytao, http://www.anytao.com
    public class User
    {
    public string Name { get; set; }
    public int Age { get; set; }
    }

    这些所有的新特性最终都为了一个共同的目标而铺垫,这就是C# 3.0中最重量级的新特性:LINQ。所以,本文也不能少了对LINQ的讨论,在代码级别实现类似于SQL式的查询语法,以类型安全的通用方式完成增、删、改、查等数据操作的基本方式。只要数据源基于IEnumerable<T>接口而实现,那么不管是关系型数据、内存中集合还是XML都可以作为LINQ查询对象进行数据处理,这为面向对象语言实现函数式的编程体验创造了条件,一种全新的编程风格为编程体验刮来一股旋风:

    // Release : code05, 2009/05/07
    // Author  : Anytao, http://www.anytao.com
    public static void Main()
    {
    List<User> users = new List<User>
    {
    new User{Name = "小王", Age = 27},
    new User{Name = "小张", Age = 29},
    new User{Name = "小李", Age = 23}
    };
    IEnumerable<User> result = from user in users
    where user.Age < 30
    orderby user.Age descending
    select user;
    foreach (var user in result)
    {
    //执行操作
    }
    }

  • 相关阅读:
    webpack + react 前端工程化实践和暂不极致优化
    图解Javascript——作用域、作用域链、闭包
    图解Javascript——变量对象和活动对象
    图解Javascript——执行上下文
    简单实用的进度条、时间轴
    Nginx配置文件nginx.conf中文详解(转)
    负载均衡——nginx理论
    JavaScript的闭包是什么意思以及作用和应用场景
    巧用HTML5给按钮背景设计不同的动画
    利用js的for循环实现一个简单的“九九乘法表”
  • 原文地址:https://www.cnblogs.com/meta/p/1453213.html
Copyright © 2020-2023  润新知