1。规范:
除常量外,所有变量用驼峰命名方式,其它用帕斯卡命名方式。
,
2。编译:
首先由csc.exe将cs文件编译成MSIL。当双击exe的时候,会由clr的jit(及时)编译器再次编译成cpu指令。
csc位置(如):Microsoft.NET \ Framework \ v4.0.30319 C: \ Windows \ \ csc。exe
csc命令(如):
ngen位置(如):C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ngen.exe(可实现jit效果)
ngen命令(如):ngen安装D: \ SystemTool \ HelloWorld.exe (备注:exe方式)
,
3。面向对象(面向对象面向对象编程:面向对象编程):
类是抽象的,对象是具体的。
析构函数:~类名(){}。实际是重写基类的Finalize()方法
,
4。变量:
成员变量:默认有一个初始值.string→null, int→0, bool→假
局部变量:使用前必须赋值。
,
5。封装:
, a。字段封装成属性b。方法参数封装成类c。方法重用d。封装成类库
,
6。继承:
单根性,传递性
构造函数不继承。
,
7。多态:
。虚拟和覆盖方法可以给重写
b。抽象的方法
c。接口
,
8。访问修饰符:
成员访问修饰符:
私人:当前类内
保护:当前类内和子类内
内部:当前程序集内
内部保护:当前程序集内当前类内和子类内
公共:所有都可以
命名空间下的访问修饰符:
只允许使用公众和内部,但是微软内部使用私有的。
,
9。静态:
静态作为与多态区别的.stati修饰。
静态类:不能被实例化,成员都为静态成员,可以有const常量
静态成员:静态成员在赋初始值的时候,是在静态构造函数中赋值的。
静态构造函数:在类第一次使用前只调用一次。不能有修饰符,不能重载。
,
10。值类型与引用类型值传递与引用传递:
值类型:int双重结构等隐式继承ValueType。
引用类型:字符串类数组等隐式继承对象。
值传递:默认就是值传递。
引用传递:在方法参数中加上裁判就是引用传递。
,
11。固体:
单:单一职责
开放:开发封闭
lis:里氏替换
接口:接口分离
依赖:依赖倒置
面向对象设计的固体原则
,
12。接口:
。接口里只能定义方法。
b。接口的成员不能有修饰符。默认为公共
,
13。实现接口和显示实现接口:
一个类同时实现接口和显示实现接口。
显示实现接口:当被调用的是接口的时候,则调用显示接口的方法
实现接口:默认执行实现接口的方法。
,
14。类型转换:
隐式转换:当小范围的类型转大范围的类型。
强制转换:当指定的大范围的类型对象可以转小范围类型的时候用或者进行转换
转换:语义转换
解析:将其他类型转换成数字类型
,
15。单位:
1字节=8位
1 kb=1024字节
Int32=int: 4字节
,
16。异常处理:
错误类型:语法错误/逻辑错误/运行错误
扔;:在抓中执行就是将异常继续往上抛
在try-catch-finally中,注意返回的问题。本质都是编译把拿回来到最下面。通过反编译工具可以看到返回的值会单独拿个变量接受
,
17。参数修饰符:
参数:可变参数
:传出参数
裁判:引用传递,本质在传参数的值的时候,传递的是该变量的内存地址
,
18岁。字符串:
1。字符串不可变性:实际双引号里的字符串都是常量。普通声明的常量,是声明一个常量的变量接受一个常量。
2。字符串拘留池:正是因为字符串的不可变性,所以提出了这个池的技术,实际就是把字符串的内容当做键,字符串的地址当做值。
3. stringbuilder:在字符串拼接时,一定要使用该对象,否则将不断创建字符串对象,并且非常建议给定初始值。
c#字符串拘留池机制
,
19。垃圾回收GC:
回收对象:托管资源内存中的堆对象。
回收时间:不确定
垃圾回收分3代。当第一代空间满的时候,就回收第一代资源,并把没有回收的对象移到第二代中。依次类推。非常不建议手动垃圾回收。
,
20。集合:
集合和数组表面上一个是不定长度,一个固定长度。实际本质集合的内部维护着一个数组。当增加一个元素的时候,会重新一个新的一个数组
常见集合:
ArrayList,List
Hashtable Dictionary