六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 56|回复: 0

C#序列化和反序列化

[复制链接]

升级  34.67%

30

主题

30

主题

30

主题

秀才

Rank: 2

积分
102
 楼主| 发表于 2013-1-19 04:14:54 | 显示全部楼层 |阅读模式
序列化和反序列化我们可能经常会听到,其实通俗一点的解释,序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。
我想最主要的作用有:
1、在进程下次启动时读取上次保存的对象的信息
2、在不同的AppDomain或进程之间传递数据
3、在分布式应用系统中传递数据
......
在C#中常见的序列化的方法主要也有三个:BinaryFormatter、SoapFormatter、XML序列化
本文就通过一个小例子主要说说这三种方法的具体使用和异同点

这个例子就是使用三种不同的方式把一个Book对象进行序列化和反序列化,当然这个Book类首先是可以被序列化的。至于怎么使一个类可以序列化可以参见:C#强化系列文章一:ViewState使用兼谈序列化
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee;">Book类
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->usingSystem;
usingSystem.Collections;
usingSystem.Text;

namespaceSerializableTest
{
[Serializable]
publicclassBook
{
publicBook()
{
alBookReader
=newArrayList();
}


publicstringstrBookName;

[NonSerialized]
publicstringstrBookPwd;

privatestring_bookID;
publicstringBookID
{
get{return_bookID;}
set{_bookID=value;}
}


publicArrayListalBookReader;

privatestring_bookPrice;
publicvoidSetBookPrice(stringprice)
{
_bookPrice
=price;
}


publicvoidWrite()
{
Console.WriteLine(
"BookID:"+BookID);
Console.WriteLine(
"BookName:"+strBookName);
Console.WriteLine(
"BookPassword:"+strBookPwd);
Console.WriteLine(
"BookPrice:"+_bookPrice);
Console.WriteLine(
"BookReader:");
for(inti=0;i<alBookReader.Count;i++)
{
Console.WriteLine(alBookReader);
}

}

}

}

您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表