U Must Know The .Net --7
关键字
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);
}
随机推荐
- 阿里云 Server (Ubuntu 12.04) 配置 FTP
来自 http://blog.csdn.net/zgrjkflmkyc/article/details/45510345 这个是阿里云的官方用户手册 http://bbs.aliyun.com/re ...
- JS的面向对象与原型
原型 const yoshi = { skulk: true }; const hattori = { sneak: true }; const kuma = { creep: true }; ⇽-- ...
- matplotlib.pyplot 属性用法
import matplotlib.pyplot as plt x_values = list(range(1, 1001)) y_values = [x**2 for x in x_values] ...
- C# Func和匿名方法 简单使用
今天敲代码遇见一个问题,解决中用到了C#的Func和匿名方法,发现挺好用的 定义一个这样的方法可以避免重复写try catch 这里用到了Func<int,string> ,它其实就是一个 ...
- C#/.NET 实现的多屏联动,多屏共享,显示到指定屏幕上
假设我现在有4个屏幕,希望实现主屏幕在操作的时候,其他3块屏幕可以实时联动,并且延迟在1s以内. 正常情况下,我们可以借助于各个远程软件实现效果,但是有时候会显得笨重麻烦,假如只有一台服务器呢?? S ...
- mysql开启慢查询报错:
1.进入mysql命令行:#mysql -uroot -p123456,执行下面的命令开启慢查询报错: set global slow_query_log=on; set global long_qu ...
- html图片导入画布
首先定义一个画布 canvas id="myCanvas"></canvas> var canvas = document.getElementById('myC ...
- 【NOI2019模拟2019.7.1】三格骨牌(轮廓线dp转杨图上钩子定理)
Description \(n,m<=1e4,mod ~1e9+7\) 题解: 显然右边那个图形只有旋转90°和270°后才能放置. 先考虑一个暴力的轮廓线dp: 假设已经放了编号前i的骨牌,那 ...
- 「题解」:07.16NOIP模拟T2:通讯
问题 B: 通讯 时间限制: 1 Sec 内存限制: 256 MB 题面 题目描述 “这一切都是命运石之门的选择.” 试图研制时间机器的机关SERN截获了中二科学家伦太郎发往过去的一条短 信,并由此 ...
- Go 程序开发的注意事项
Go 程序开发的注意事项 1) Go 源文件以 "go" 为扩展名. 2) Go 应用程序的执行入口是 main()函数. 这个是和其它编程语言(比如 java/c) ...