C##速览,大概对照c++区别?复习

C#

序列化和反序列化

序列化:将Object缓存为数据,参考游戏存档

反序列化:序列化的逆过程,参考游戏读档

  1. 把对象保存到本地,下次运行程序时恢复这个对象。

  2. 把对象传送到网络的另一台终端上,然后在此终端还原这个对象。

  3. 复制系统的粘帖板中,然后用快捷键Ctrl+V恢复这个对象。

[XmlIgnore] 可以指明某公开成员不参与序列化及反序列化过程。

执行序列化需要满足以下要求:

— 类必须有一个公共的无参构造函数;public MyClass()

— 要反序列化的字段和属性必须公开;public

— 不含有循环引用;

— 不含有不可序列化的成员变量;

委托和事件

委托可以增加程序的扩展性,减少if…else的逻辑判断;

通过+=将方法绑定到委托,-=取消绑定。

  1. 委托是一种类型
  2. 委托是一种类型与返回值相同函数的链表
  3. 委托使用+=,=,-=三个符号操作链表里的函数
  4. 调用委托就会依次调用委托链表里的所有函数
  5. 委托返回值默认是最后一个添加的函数返回值

1、委托的本质就是一个密封类,这个类继承了MulticastDelegate(多播委托)

2、委托的构造函数,有两个参数,一个类型是IntPtr,用来接收方法的,如下图:

img

3、可以同步调用(Invoke),也可以异步调用 (BeginInvoke、EndInvoke)

注:

1、多播委托:一个委托可以代表多个相同签名的方法,当委托被调用时,这些方法会依次执行

2、IntPtr表示窗口的时候,叫它“句柄”,表示方法时,叫它“指针”

3、异步调用:会产生一个线程,异步执行

事件是一种特殊的委托

首先明确关键字event在实例化委托时使用而非定义委托时使用。

委托的定义和使用

        delegate void func();
        static func l;

事件的定义和使用

        delegate void func();
        static event func l;

事件需要和类结合起来,定义事件的类才可以调用事件,委托将函数链接与取消或者触发,可以自由使用。事件限定了只能由声明时间的类来触发。

c#值类型和引用类型

两者存储方式不同,所以有copy的区别(深拷贝和浅拷贝)

常见的深拷贝的方式:

。事件限定了只能由声明时间的类来触发。

c#值类型和引用类型

两者存储方式不同,所以有copy的区别(深拷贝和浅拷贝)

常见的深拷贝的方式:

反射、序列化和反序列化(二进制\XML)

猜你喜欢

转载自blog.csdn.net/weixin_43925768/article/details/133272350