C#面向对象总结(2)

装箱和拆箱:

装箱:就是将值类型转换成引用类型

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

第一幅图,oi是一个空的引用,i是一个值类型3

发生装箱以后

oi这个引用不再是空,而是堆当中的对象,这个对象包含一个值是3,这个对象是一个新创建的对象。

和原来的值类型的3不是在一个地方存储的,完全不相关。

创建了一个新的对象,一个新的副本。而且这个对象是在堆当中的。

我们知道值类型是在栈当中的

堆当中的对象是需要gc回收的,语言机制帮我们绑定给的

栈当中是超出作用于就没有了,销毁了 

我们可以看出,在堆当中创建对象是有一定性能的消耗

装箱的过程能不发生就不发生,因为有性能的消耗

有时候需要发生我们还是需要操作编写这样的代码

C#面向对象总结(2)

各自变化各自的没有相互关系

拆箱:

C#面向对象总结(2)

C#面向对象总结(2)

自定义转换:

    C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

我们想将猫咪转换成狗狗类,我们为猫咪类定义一个静态方法。

实现隐式转换至少静态方法

所以pubilc和static是必不可少的

隐式则implicit,并且operator表明是转换操作

operator表示是转换操作 ,操作符一样的操作

但是没有函数名,返回类型是Dog

C#面向对象总结(2)

显示和隐式几乎一模一样,就是一个是implicit一个是explicit

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)


泛型

    C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2) 

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

集合:

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

缺点是速度慢

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

相率高效,对数级

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

委托:

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)


C#面向对象总结(2)

这是在C#2.0中

到了3.0有了Lanbda表达式

C#面向对象总结(2)

C#面向对象总结(2)

事件

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

C#面向对象总结(2)

和观察者模式类似