zoukankan      html  css  js  c++  java
  • c#3.0新特性(一):var关键字、自动属性、初始化器和扩展方法

    前言:上周闲暇时在公司看了Anders Hejlsberg在PDC08上讲的“The Future of C#”。下面是视频里的截图:

    笔者接触c#(主要是2.0)不足两年时间,而且c#2.0很多东西都还没学或者没有学懂。虽然在网上也曾经看过几篇介绍c#3.0的博文,可是看过就没有再使用过,几乎已经真的“忘到姥姥家了”。看到c#变化的如此之快,更加感到恐惧和不安。既然抱了ms的大腿,学习要是没有自发性和积极性,“落后”是早晚的事啊。
    现在c#已经有十年历史,最高版本已经到4.0了。在视频里安德斯展现了c#惊人的生产力,对照现在自己的编程水平,恍如隔世,惭愧啊。
    言归正传。下面整理下这几天自己的自学笔记,所有代码都在本人的机器上测试通过,本人菜鸟,如有讹误,务请留意。
    一、var关键字
    如果你有javascript的开发经验,var关键字你一定不会陌生。和js中的var关键字类似,在C#3.0中,var关键字用来定义隐式化的局部变量,看个例子先:
    Code
    其实在使用var关键字时,编译器会根据初始化变量的变量值来推断变量的数据类型,所以var关键字在本质上并没有改变什么。只不过比直接写强类型的数据类型看起来更"灵活"一些,这也就是解释型语言曾经的“优势”。
    接着介绍常用的四个新特性,贴代码为主,多操作就熟练了。
    二、自动属性(Automatic Properties)
    Code
    三、对象初始化器(Object Initializers)
    Code

    四、集合初始化器(Collection Initializers)

    Code

    五、扩展方法(Extension Method)

    "扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。"通常,建议您只在不得已的情况下才实现扩展方法,并谨慎地实现。只要有可能,必须扩展现有类型的客户端代码都应该通过创建从现有类型派生的新类型来达到这一目的"。
    如果你有javascript的开发经验,相信对js的原型(prototype)不会陌生,这里的扩展方法其实类似于js的原型方式。举例来说:
    Q:去掉字符串两端的特殊字符"-"
    1、javascript实现方式


    // 去掉字符串两端的特殊字符"-"
    String.prototype.TrimMinus = function() {
        
    return this.replace(/(^[-]+)|([-]+$)/g, "");
    }
    var strTest="-jeff wong-";
    alert(strTest.TrimMinus()); 
    //调用

    2、看下c#扩展方法如何发挥:

    Code

    ps:上述js的原型扩展和c#的扩展方法功能是一样的,就是string这个类添加一个扩展方法,使得所有这个类的实例化对象能够直接使用这个方法.


    作者:Jeff Wong
    出处:http://jeffwongishandsome.cnblogs.com/
    本文版权归作者和博客园共有,欢迎围观转载。转载时请您务必在文章明显位置给出原文链接,谢谢您的合作。

  • 相关阅读:
    Ubuntu虚拟机磁盘空间不足的解决
    eclipse启动报错 JVM terminated. Exit code=1
    Ubuntu16.04 安装eclipse
    HDU 1710 Binary Tree Traversals(二叉树)
    Ubuntu16.04 搭建伪分布式Hadoop环境
    HDU 1560 DNA sequence(IDA*)
    Go的函数
    Go的包
    Go语言开发环境搭建
    go的循环
  • 原文地址:https://www.cnblogs.com/jeffwongishandsome/p/1457323.html
Copyright © 2011-2022 走看看