• C#一些新特性Object,var,dynamic,asynchronous


     dynamic英音:[dai'næmik]美音:[daɪ'næmɪk]   

    asynchronous英音:[ei'siŋkrənəs]美音:[e'sɪŋkrənəs]   

    VAR 是3.5新出的一个定义变量的类型
    其实也就是弱化类型的定义
    VAR可代替任何类型
    编译器会根据上下文来判断你到底是想用什么类型的
    
    至于什么情况下用到VAR   我想就是你无法确定自己将用的是什么类型
    就可以使用VAR     类似 OBJECT
    但是效率比OBJECT高点
    
    使用var定义变量时有以下四个特点:
    
    1. 必须在定义时初始化。也就是必须是var s = “abcd”形式,而不能是如下形式:
    var s;
    s = “abcd”;
    
    2. 一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。
    
    3.   var要求是局部变量。
    
    4.   使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。

    var表示“变量的类型是在编译时决定的”,但是dynamic表示“变量的类型是在运行时决定的”。因此,dynamic与var具有截然不同的含义。

      var让你在初始化变量时少输入一些字,编译器会根据右值来推断出变量的类型。dynamic更厉害,它告诉编译器,根本就别理究竟是啥类型,运行时再推断不迟。

      var只能用于局部变量的定义,你不能把类的属性定义成 var,也不能把方法的返回值类型或者是参数类型定义成var。dynamic就没有这些局限了。

      dynamic类型并没有跳过类型校验,只是延迟到了运行时。如果在运行时,检测到类型不兼容,照样会抛出异常。

      你可能在以下情况下使用dynamic:

      1.COM对象

      2.动态语言(如IronPython,IronRuby等)对象

      3.反射对象

      4.C# 4.0中动态创建的对象

     public class _Default

    {

    略....

    }

      dynamic d = new _Default();

      d.MyMethod(22); // 方法调用

      d.A = d.B; // 属性赋值

      d[“one”] = d[“two”]; // 索引器赋值

      int i = d + 100; // 运算符调用

      string s = d(1,2); // 委托调用

    C#会增加更多的特性以支持异步编程(Asynchronous Programming)。

    Reflection

  • 相关阅读:
    redis 下载安装
    Docker之网络
    容器与镜像
    Docker之容器
    Docker之镜像
    在安装完windows和linux双系统后,删除BIOS中的引导启动项在Window下
    Ububtu 18.04中如何在火狐浏览器中安装flash插件
    lambda 表达式
    IDEA DeBug mode
    spring 系统启动加载的类
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/1990496.html
Copyright © 2020-2023  润新知