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);
}
随机推荐
- Mybatis_环境搭建
1.配置pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...
- (Struts2学习系列五)Struts2默认action
当我们访问项目下一个不存在的Action的时候,页面就会报错,404找不到资源,这样对用户来说是非常不友好的,所以我们设置一个默认的Action,当找不到对应Action的时候,就会跳转到默认Acti ...
- @Conditional系列注解例子
1. @Conditional 说明:指定的Condition实现类,matches方法返回true则注入bean,false则不注入 @Configuration public class Bean ...
- sqlldr details
https://www.csee.umbc.edu/portal/help/oracle8/server.815/a67792/ch05.htm Loading into Empty and Non- ...
- leetcode-第11场双周赛-5088-等差数列中缺失的数字
题目描述: 自己的提交: class Solution: def missingNumber(self, arr: List[int]) -> int: if len(arr) == 2: re ...
- Java面向对象的特征一:封装性
1.4 面向对象的特征一:封装性 当创建了类的对象以后,如果直接通过"对象.属性"的方式对相应的对象属性赋值的话,可能会出现不满足实际情况的意外,我们考虑不让对象来直接作用属性,而 ...
- flyway 管理数据库版本
Flyway 和 Liquibase 都是 Java 项目中常用的 DB migration 工具, 从使用简便性看,Flyway 比 Liquibase 更简单, 从 github 的 star 数 ...
- 关于SecureCRT链接服务器出现乱码的问题
连接到服务器,选择上方的“选项”->“会话选项”->“外观”->右边的字符编码->utf-8
- Framework7-Vue搭建项目
在Framework7的gitHub上有一套与Vue结合的模板,直接下载下来使用即可 https://github.com/framework7io/framework7-template-vue-w ...
- Typora--终于找到一个能够解决将csdn文章同步到hexo的完美编辑器(解决csdn图片防盗链导致无法直接复制文章的问题)。
文章目录 需求 背景 新宠 告诉我,我的名字叫什么?大声点我听不见~ 页面 神奇之处 看得见的优点 如何设置项目根目录 如何显示图片? 于是最终操作流程 个人博客:https://mmmmmm.me ...