一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

C#序列化與反序列化(Serializable and Deserialize)

     序列化是指將對象實例的狀態存儲存儲媒體的過程。在此過程中,先將對象的公共字段和私有字段以及類的名稱(包括類所在的程序集)轉換為字節流,然后再把字節流寫入數據流。在隨后對對象進行反序列化時,將創建出與原對象完全相同的副本。

     我們經常需要將對象的字段值保存到磁盤中,并在以后檢索此數據。盡管不使用序列化也能完成這項工作,但這種方法通常很繁瑣而且容易出錯,并且在需要跟蹤對象的層次結構時,會變得越來越復雜。可以想象一下編寫包含大量對象的大型業務應用程序的情形,程序員不得不為每一個對象編寫代碼,以便將字段和屬性保存至磁盤以及從磁盤還原這些字段和屬性。序列化提供了輕松實現這個目標的快捷方法。

     .NET公共語言運行時 (CLR) 管理對象在內存中的分布,.NET 框架則通過使用反射提供自動的序列化機制。對象序列化后,類的名稱、程序集以及類實例的所有數據成員均被寫入存儲媒體中。對象通常用成員變量來存儲對其他實例的引用。類序列化后,序列化引擎將跟蹤所有已序列化的引用對象,以確保同一對象不被序列化多次。.NET 框架所提供的序列化體系結構可以自動正確處理對象圖表和循環引用。對對象圖表的唯一要求是,由正在進行序列化的對象所引用的所有對象都必須標記為 Serializable(請參閱基本序列化)。否則,當序列化程序試圖序列化未標記的對象時將會出現異常。

當反序列化已序列化的類時,將重新創建該類,并自動還原所有數據成員的值。

     在C#中常見的序列化的方法主要也有三個:BinaryFormatter、SoapFormatter、XML序列化。本文就通過一個小例子主要說說這三種方法的具體使用和異同點。

新建一個vs2008控制臺工程SerializableTest,添加一個Person類,加上[Serializable]使其可以被序列化

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace SerializableTest{    [Serializable]    public class Person    {        public string Sno { get; set; }        public string Name { get; set; }        public string Sex { get; set; }        public int Age { get; set; }        public string DisplayInfo()        {            return "我的學號是:" +Sno+ "/n我的名字是:"+Name + "/n我的性別為:"+Sex+"/n我的年齡:"+Age+"/n";        }    }}

NET技術C#序列化與反序列化(Serializable and Deserialize),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产高清视频a在线大全 | 亚洲一区中文字幕在线 | 99久久精品全部 | 五月婷婷激情五月 | 激情影院成人区免费观看视频 | 国产中文在线 | 中文字幕在线亚洲 | 狠狠色伊人亚洲综合网站l 狠狠色伊人亚洲综合网站色 | 欧美在线观看黄色 | 国内黄色一级精品 | 五月天婷婷精品视频 | 在线观看中文字幕一区 | 亚洲图片 中文字幕 | 日本高清色视影www日本 | 午夜在线观看视频在线播放版 | 色视频大全 | 欧美激情一级欧美精品 | 欧美成人三级网站 | 91精品国产一区二区三区左线 | 免费观看成人欧美1314www | 久久综合久久精品 | 国产精品一区二区久久不卡 | 免费观看成人鲁鲁鲁鲁鲁视频 | 国产成人亚洲精品无广告 | 视色4se000 | 精品91自产拍在线 | 樱花aⅴ一区二区三区四区 影音先锋 色天使 | 久99久精品免费视频热77 | 国产区精品一区二区不卡中文 | 日韩精品一区二区三区视频网 | 99热在线国产 | 免费伊人 | 色在线播放 | 狠狠干伊人 | 精品日韩欧美一区二区三区在线播放 | 黄色影片在线观看 | 色在线视频免费 | 亚洲伊人成人网 | 欧美一级做一级做片性十三 | 国产成人啪精品视频免费网站软件 | 在线观看视频一区二区 |