C# 序列化、反序列化
刚刚碰巧群里有人问这个问题,而之前的博客中并没有提及,打算弄一篇博客简单提及一下这个知识点。
MSDN文档中提及了序列化、反序列化的概念,这里引用一下。
序列化:将对象状态转换为可保持或传输的形式的过程。
反序列化:是序列化的逆过程,就是将流转换为对象的过程。
这两个过程一起保证数据易于传输和存储。
详细的请参考:http://msdn.microsoft.com/zh-cn/library/7ay27kt9(v=vs.100).aspx。
下面直接给出完整的代码,该代码演示了如何序列化一个对象以及反序列化(还原对象)的过程。
namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){Objectstudent=newStudent(){StudentID="007",StudentName="guwei4037"};stringresult=ObjectToString<Object>(student);Console.WriteLine(result+"\r\n");StudentnewResult=StringToObject<Student>(result);Console.WriteLine("ID:{0},Name:{1}",newResult.StudentID,newResult.StudentName);}///<summary>///对象转字符串(序列化后转Base64编码字符串)///</summary>///<paramname="obj">对象</param>///<returns>字符串</returns>publicstaticstringObjectToString<T>(Tobj){using(MemoryStreamstream=newMemoryStream()){IFormatterformatter=newBinaryFormatter();formatter.Serialize(stream,obj);stream.Position=0;byte[]buffer=newbyte[stream.Length];stream.Read(buffer,0,buffer.Length);returnConvert.ToBase64String(buffer);}}///<summary>///字符串转对象(Base64编码字符串反序列化为对象)///</summary>///<paramname="str">字符串</param>///<returns>对象</returns>publicstaticTStringToObject<T>(stringstr){using(MemoryStreamstream=newMemoryStream()){byte[]bytes=Convert.FromBase64String(str);stream.Write(bytes,0,bytes.Length);stream.Position=0;IFormatterformatter=newBinaryFormatter();return(T)formatter.Deserialize(stream);}}}///<summary>///可序列化的类,用Serializable标示此类可序列化///</summary>[Serializable]publicclassStudent{publicstringStudentID{get;set;}publicstringStudentName{get;set;}}}
运行结果截图:
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。