• 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表达式树

    有时候不是我们失去了目标,而是失去了方向。
  • 相关阅读:
    【PHPStorm使用手册】如何设置字体大小?
    Django——admin组件简单入门
    cookie与session
    Django
    练习题
    线程理论之大白话
    队列
    初识gevent模块
    Python第三方模块安装
    Python标准模块_concurrent.futures
  • 原文地址:https://www.cnblogs.com/871735097-/p/3828562.html
Copyright © 2020-2023  润新知