zoukankan      html  css  js  c++  java
  • c# 3.0语言主要增强

    1隐含类型的局部变量

    var i=5;

    var h=23.56;

    var s="Cshap"

    var intarr=new[]{1,2,3};

    var 为关键字,可以根据后边的初始化语句自动推断类型,初始化语句必须为表达式,切编译时可以推断类型。var声明仅仅局限于局部变量,亦可以用于foreach,using等语句。数组也可以作为隐含类型。这里面var 编译的的时候根据后边表达式的类型生成相对应的类型局部变量,比如 i 为int类型 而不是生成object 的弱类型,所以这边var 依然为强类型。 var 其实这里不是个类型,我们可以理解为一个占位符,编译期间,编译器就会 把他替换成一个具体的类型而且是一个强类型。表达式不能为null,也就是说 不能直接写成var i=null;因为编译器不能推断出null的类型,编译错误,当然也不能直接写 var s(后边没有表达式)。

    foreach(var i in array)array为数组,编译时候  i的类型为当前遍历到的元素的类型(强类型)

    2扩展方法

    3对象与集合初始化器

    public class Point()

    {

      private int x;

      public int X

      {

        get{ return x;}

        set{ x=value;}

      }

    }

    var a=new Point();相当于var a=new Point{X=1}

    几个初始化器、

    List<int> list=new List<int>{1,2,3,4,5};

    4匿名类型

    var a=new {name="123",pwd="123"}

    编译器可以推断出任何问题 比如推断出类型的属性,一个是name ,一个是pwd,(还有编译器自动生成的字段(保存属性值))

    编译相当于替我们生成类型比如:

    class SomeType

    {

        //字段

      private string _name;

      private string _pwd;

      //属性

      public string name {get set}

      public string pwd {get set}

    }

    SomeType 这里只是随便写,也不知道编译器生成个什么名字,SomeType直接继承与object

    匿名类型直接继承System.Object

    匿名类型的成员是编译器根据初始化器推断而来的一些读写属性。不用声明其中字段或属性的类型,由编译器推断而出。

    匿名类型适合局部内使用。不合适在各个地方穿梭。

    5Lambda表达式

    6查询表达式(LINQ)

    7表达式树

    有时候不是我们失去了目标,而是失去了方向。
  • 相关阅读:
    09 python初学 (字符串)
    08 python 初学(字典)
    07 Python初学(元组)
    ubuntu 学习
    10 python 初学(Python 的编码解码)
    12 python 初学(深浅拷贝、集合)
    11 python初学 (文件)
    ubuntu 在 Windows 下的安装
    mysql常用命令总结
    关于Windows 7 下临时IPV6地址的问题,如何禁用它
  • 原文地址:https://www.cnblogs.com/871735097-/p/3828562.html
Copyright © 2011-2022 走看看