关键字

1 new

  创建对象/调用构造函数

  隐藏基类成员

  new()约束,表明泛型类声明中的任何参数都必须有公共无参构造函数

  new 实现多态

1.1  

  new class:分配内存,调用构造函数实例化

  new struct:调用构造函数实例化

  new int:初始化值为0

(值类型与引用类型new 的时候,值类型直接初始化其值,引用类型还是给他分配内存)

2 base/this

  base:

    在构造函数子类访问父类公有 受保护属性

    调用基类方法(在子类中已被重写),多层父类向上一层一层找知道找到为止

    构造函数中:base  先调用父类构造函数

  this :

    只能出现在对象内部,对象外部访问不到

    指示属性/参数名称相似时的属性成员

      this.Name(属性)=Name(参数)

    传递当前实例

      ReFresh(this)

    声明索引器

      pubic string this[int para]

      {

        get{return array[para] ;}

      }

2.1 类实例化顺序

   实例化基类-->实例化父类-->数理化父类-->实例化子类

3 using  

    创建namespace/class别名

      using ATC=Xmals.Device.ATC

    using== dispose  if Class:IDisposable  Dispose用于清理对象的非托管资源,而不是释放对象的内存,托管对象的内存永远由GC控制

4 null

    引用对象的默认值(表示这个对象声明但未初始化,引用是无效的)

    Nullable<T>==T?  Nullable<T>本质上是个预定义的结构体

    ??

        a=b??c  如果b为null,则a=c,否则a=b

        a=b??c??d??e??f,选择bcdef中不为空的数

5 null Object

    将if(user!=null){}  ---->if(NullUser.IsNull)  避免抛出空引用异常

    利用扩展方法实现null object

6 Lock

  string特殊,整个应用程序只有一个实例,不用lock

  多线程访问同一资源会出现问题,有以下解决方式

    Lock  

    监视器

    同步事件和等待句柄

    Mutex对象

  lock将语句块标记,保证代码执行不被其他线程终端,其他线程只有等待执行解锁之后才可以访问该语句

    object obj=new object();

    lock(object)

    {

      //xx

    }

  其原理是用了监视器,lock等同于

    System.Threading.Monitor.Enter(obj);//TryEnter

    try

    {

    //xx

    }

    finally

    {

    System.Threading.Monitor.Exit(obj);

    }  

随机推荐

  1. git branch 分支和分支合并

    一般一个项目有一个默认的分支 master 主分支,然后可以有许多个分支,在别的分支上的操作不会影响到主分支.使用git branch查看当前多多少分支以及当前处于哪个分支上:执行git branch ...

  2. 5、如何快速找到多个字典中的公共键(key) 6 如何让字典保持有序 7 如何实现用户的历史记录功能(最多n条)

    5.如何快速找到多个字典中的公共键(key) from random import randint,sample #随机取数 # a = sample("ABCDEF",randi ...

  3. 软工-五月心得体会 PB16110698

    伴随着愈发红润的骄阳,火热而紧张刺激的五月悄然而至.这一个月以来,曾经让同学们“废寝忘食”的软工课大作业终于告一段落,每周一篇的读书笔记也缓到半月一篇,着实令人长吐一口气.但这一份表面的余裕当然没有看 ...

  4. 新学MyBatis

    今天学习了Mybatis入门,将知识归纳一下: 创建一个java项目之后,想使用myBatis需要完成一下几个步骤: 1.先导jar包 2.写model文件 () 3.写全局配置文件 SqlMapCo ...

  5. Mysql的Event

    Mysql的Event Event简介 Event是mysql中的一个事件,和触发器类似,触发器是在某条sql语句执行后可能会触发,而Event是每隔一段时间或某个特定的时间点执行,可以精确到秒. 准 ...

  6. Vue Router基础

    路由 安装 vue-router 起步 <router-link to="/foo">Go to Foo</router-link> <router- ...

  7. 下面是一段delphi代码,你在c# 中引入api 即可

    procedure TForm1.Button1Click(Sender: TObject);var i:HWND; cs:CREATESTRUCT;begin// i := FindWindowEx ...

  8. 在DELPHI中显示GIF动画

    想没想过在DELPHI中显示GIF动画?Delphi的用户是非常幸运的,因为有免费控件可以使用.最著名的控件是Anders Melander编写的TGifImage,并提供完整的源程序.它原来的主页是 ...

  9. NX二次开发-UFUN编辑图层类别描述UF_LAYER_edit_category_descr

    1 NX11+VS2013 2 3 #include <uf.h> 4 #include <uf_layer.h> 5 6 7 UF_initialize(); 8 9 //创 ...

  10. Centos6.5安装ruby2.2.3

    一.安装库 Yum install –y gcc* openssl* wget 二.安装ruby wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby- ...