日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

序列化例子

發(fā)布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 序列化例子 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C#中的"序列化" Serializable 理解

我的理解:?? ?? 比如用一個類描述一張合同,而這個類實例化后其中的字段保存著合同的信息,如果現(xiàn)在要把這個類的實例發(fā)送到另一臺機器、另一個窗體或是想保存這個類以便以 后再取出來用(持久化對象),可以對這個類進行序列化(序列化實際上是一個信息流),傳送或保存,用的時候再反序列化重新生成這個對象

為什么您想要使用序列化?有兩個最重要的原因促使對序列化的使用:一個原因是將對象的狀態(tài)保持在存儲媒體中,以便可以在以后重新創(chuàng)建精確的副本;另 一個原因是通過值將對象從一個應(yīng)用程序域發(fā)送到另一個應(yīng)用程序域中。例如,序列化可用于在??? ASP.NET??? 中保存會話狀態(tài)并將對象復(fù)制到??? Windows??? 窗體的剪貼板中。遠程處理還可以使用序列化通過值將對象從一個應(yīng)用程序域傳遞到另一個應(yīng)用程序域中。?? ??? ?? 序列化的是對象的狀態(tài)?? ?? 也就是對象數(shù)據(jù)成員的值和方法是沒有關(guān)系的

跨應(yīng)用程序域通信時,要用到序列化?? ?? 以及用WEB服務(wù)時 一:BinaryFormatter序列化

序列化簡單點來理解就是把內(nèi)存的東西寫到硬盤中,當(dāng)然也可以寫到內(nèi)存中(這個內(nèi)容我會在后面寫一個例子).而反序列化就是從硬盤中把信息讀到內(nèi)存中.就這么簡單,呵呵,現(xiàn)在來看下面的例子吧!

在這篇文章中我將使用BinaryFormatter序列化類Book作為例子,希望大家能從例子中深刻體會什么是序列化.

定義類Book:

[Ref="tag-863-1.html">Serializable] public Class Book { String name; Float?? price; string author;

public Book(string bookname, float bookprice, string bookauthor) { name = bookname; price = bookprice; author = bookauthor; } }

在類的上面增加了屬性:Serializable.(如果不加這個屬性,將拋出SerializationException異常).

通過這個屬性將Book標志為可以序列化的.當(dāng)然也有另一種方式使類Book可以序列化,那就是實行ISerializable接口了.在這里大家要注意了:Serializable屬性是不能被繼承的咯!!!

如果你不想序列化某個變量,該怎么處理呢?很簡單,在其前面加上屬性[NonSerialized] .比如我不想序列化

string author;

那我只需要

[NonSerialized]

string author;

好了,現(xiàn)在就告訴大家怎么實現(xiàn)序列化:

我們使用namespace:

using System;

using System.IO;

using System.RunTime.Serialization.Formatters.Binary;

首先創(chuàng)建Book實例,like this:

Book book = new Book("Day and Night", Numbertype="1" tcsc="0">30.0f, "Bruce");

接著當(dāng)然要創(chuàng)建一個文件了,這個文件就是用來存放我們要序列化的信息了.

FileStream fs = new FileStream(@"C:\book.dat", FileMode.Create);

序列化的實現(xiàn)也很簡單,like this:

BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(fs, book);

很簡單吧!現(xiàn)在我列出整個原代碼,包括反序列化.

static Void Main(string[] args) { Book book = new Book("Day and Night", 30.0f, "Bruce");

using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Create)) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(fs, book); }

book = null;

using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Open)) { BinaryFormatter formatter = new BinaryFormatter(); book = (Book)formatter.Deserialize(fs);//在這里大家要注意咯,他的返回值是Object } }

有不對的地方,請大家多多糾正.....

注意一定不要忘了: using?? System.Runtime.Serialization.Formatters.Binary;?? ??? 命名空間。

轉(zhuǎn)載于:https://www.cnblogs.com/zxp19880910/archive/2012/07/09/2583659.html

總結(jié)

以上是生活随笔為你收集整理的序列化例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。