C#笔记

来源:互联网 发布:java怎么计算时间差 编辑:程序博客网 时间:2024/05/17 00:06

--委托

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。


--peer to peer(点对点)

联网概述:

联网就是与其他系统上的应用程序通信。
通信是通过发消息来实现的。
发消息之前,要先建立连接。

建立通信的步骤:

一、启动服务端的监听

二、客户端向 server 发起连接请求

三、服务器接受请求


--句柄

1、你可以把句柄理解为对象名,比如有个类 Class1,你申明了一个该类的对象,Class1 c1 = new Class1();那么这时c1就是一个句柄,它代表了一个Class1类的对象,通过c1你可以调用该类的一切方法、属性。对象是一个复杂的集合,它有很多属性,分配在内存堆里,而句柄只是给这个对象取的一个代号,它就是几个字符而已,存储在内存栈中。就如同人的名字一样,张三是一个人的名字,它就是一个人的句柄(张三这个句柄只是两个汉字,而它代表的张三这个人却是一个复杂的生命体-人)。

2、在班上每个人都有学号来让老师区别每一个人,句柄就是电脑用来区别消息(获取其他)的

详细参考:http://zhidao.baidu.com/search?lm=0&rn=10&pn=0&fr=search&ie=gbk&word=c%23%BE%E4%B1%FA%CA%C7%CA%B2%C3%B4%D2%E2%CB%BC&autorefresh=1376753200184



--序列化和反序列化

C# [Serializable] 与[Serializable()]   这两个是一样的  这个标签是类可以被序列化的特性,表示这个类可以被序列化。
 什么叫序列化  我们都知道对象是暂时保存在内存中的,不能用U盘考走了,有时为了使用介质转移对象,并且把对象的状态保持下来,就需要把对象保存下来,这个过程就叫做序列化,通俗点,就是把人的魂(对象)收伏成一个石子(可传输的介质)
 什么叫反序列化  就是再把介质中的东西还原成对象,把石子还原成人的过程。  在进行这些操作的时候都需要这个可以被序列化,要能被序列化,就得给类头加[Serializable]特性。 通常网络程序为了传输安全才这么做。不知道回答清晰满意否?

序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。
我们经常需要将对象的字段值保存到磁盘中,并在以后检索此数据。尽管不使用序列化也能完成这项工作,但这种方法通常很繁琐而且容易出错,并且在需要跟踪对象的层次结构时,会变得越来越复杂。可以想象一下编写包含大量对象的大型业务应用程序的情形,程序员不得不为每一个对象编写代码,以便将字段和属性保存至磁盘以及从磁盘还原这些字段和属性。序列化提供了轻松实现这个目标的快捷方法。  .NET公共语言运行时 (CLR) 管理对象在内存中的分布,.NET 框架则通过使用反射提供自动的序列化机制。对象序列化后,类的名称、程序集以及类实例的所有数据成员均被写入存储媒体中。对象通常用成员变量来存储对其他实例的引用。类序列化后,序列化引擎将跟踪所有已序列化的引用对象,以确保同一对象不被序列化多次。.NET 框架所提供的序列化体系结构可以自动正确处理对象图表和循环引用。对对象图表的唯一要求是,由正在进行序列化的对象所引用的所有对象都必须标记为 Serializable(请参阅基本序列化)。否则,当序列化程序试图序列化未标记的对象时将会出现异常。  当反序列化已序列化的类时,将重新创建该类,并自动还原所有数据成员的值。  在C#中常见的序列化的方法主要也有三个:BinaryFormatter、SoapFormatter、XML序列化。本文就通过一个小例子主要说说这三种方法的具体使用和异同点。 
详细参考:http://wenku.baidu.com/view/eb513e4a2b160b4e767fcf13.html



原创粉丝点击