最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 三種序列化方法分享

 更新時(shí)間:2014年02月26日 15:30:57   作者:  
這篇文章主要介紹了C# 三種序列化方法,需要的朋友可以參考下

序列化是將一個(gè)對象轉(zhuǎn)換成字節(jié)流以達(dá)到將其長期保存在內(nèi)存、數(shù)據(jù)庫或文件中的處理過程。它的主要目的是保存對象的狀態(tài)以便以后需要的時(shí)候使用。與其相反的過程叫做反序列化。

序列化一個(gè)對象
為了序列化一個(gè)對象,我們需要一個(gè)被序列化的對象,一個(gè)容納被序列化了的對象的(字節(jié))流和一個(gè)格式化器。進(jìn)行序列化之前我們先看看System.Runtime.Serialization名字空間。ISerializable接口允許我們使任何類成為可序列化的類。

如果我們給自己寫的類標(biāo)識(shí)[Serializable]特性,我們就能將這些類序列化。除非類的成員標(biāo)記了[NonSerializable],序列化會(huì)將類中的所有成員都序列化。

序列化的類型
•二進(jìn)制(流)序列化
•SOAP序列化
•XML序列化
二進(jìn)制(流)序列化:
二進(jìn)制(流)序列化是一種將數(shù)據(jù)寫到輸出流,以使它能夠用來自動(dòng)重構(gòu)成相應(yīng)對象的機(jī)制。二進(jìn)制,其名字就暗示它的必要信息是保存在存儲(chǔ)介質(zhì)上,而這些必要信息要求創(chuàng)建一個(gè)對象的精確的二進(jìn)制副本。在二進(jìn)制(流)序列化中,整個(gè)對象的狀態(tài)都被保存起來,而XML序列化只有部分?jǐn)?shù)據(jù)被保存起來。為了使用序列化,我們需要引入System.Runtime.Serialization.Formatters.Binary名字空間. 下面的代碼使用BinaryFormatter類序列化.NET中的string類型的對象。

復(fù)制代碼 代碼如下:

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace SerializationTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //Serialization of String Object         
            string strobj = "test string for serialization";
            FileStream stream = new FileStream("C:\\StrObj.txt", FileMode.Create, FileAccess.Write ,
            FileShare.None);
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(stream, strobj);
            stream.Close();

            //Deserialization of String Object
            FileStream readstream = new FileStream("C:\\StrObj.txt", FileMode.Open , FileAccess.Read ,
            FileShare.Read );
            string readdata = (string)formatter.Deserialize(readstream);
            readstream.Close();
            Console.WriteLine(readdata);
            Console.ReadLine();

        }
    }
}

SOAP序列化:
SOAP協(xié)議是一個(gè)在異構(gòu)的應(yīng)用程序之間進(jìn)行信息交互的理想的選擇。我們需要在應(yīng)用程序中添加System.Runtime.Serialization.Formatters.Soap名字空間以便在.Net中使用SOAP序列化。SOAP序列化的主要優(yōu)勢在于可移植性。SoapFormatter把對象序列化成SOAP消息或解析SOAP消息并重構(gòu)被序列化的對象。下面的代碼在.Net中使用SoapFormatter類序列化string類的對象。

復(fù)制代碼 代碼如下:

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap ;

namespace SerializationTest
 {
    class Program
    {
        static void Main(string[] args)
        {
            //Serialization of String Object           
            string strobj = "test string for serialization";
            FileStream stream = new FileStream("C:\\StrObj.txt", FileMode.Create, FileAccess.Write ,
            FileShare.None);
            SoapFormatter formatter = new SoapFormatter();
            formatter.Serialize(stream, strobj);
            stream.Close();
            //Deserialization of String Object
            FileStream readstream = new FileStream("C:\\StrObj.txt", FileMode.Open , FileAccess.Read ,
            FileShare.Read );
            string readdata = (string)formatter.Deserialize(readstream);
            readstream.Close();
            Console.WriteLine(readdata);
            Console.ReadLine();
        }
    }
}

XML序列化:
根據(jù)MSDN的描述,“XML序列化將一個(gè)對象或參數(shù)的公開字段和屬性以及方法的返回值轉(zhuǎn)換(序列化)成遵循XSD文檔標(biāo)準(zhǔn)的XML流。因?yàn)閄ML是一個(gè)開放的標(biāo)準(zhǔn),XML能被任何需要的程序處理,而不管在什么平臺(tái)下,因此XML序列化被用到帶有公開的屬性和字段的強(qiáng)類型類中,它的這些發(fā)生和字段被轉(zhuǎn)換成序列化的格式(在這里是XML)存儲(chǔ)或傳輸。”

我們必須添加System.XML.Serialization引用以使用XML序列化。使用XML序列化的基礎(chǔ)是XmlSerializer。下面的代碼是在.Net中使用XmlSerializer類序列化string對象。

復(fù)制代碼 代碼如下:

using System;
using System.IO;
using System.Xml.Serialization;

namespace SerializationTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //Serialization of String Object           
            string strobj = "test string for serialization";
            FileStream stream = new FileStream("C:\\StrObj.txt", FileMode.Create, FileAccess.Write ,
            FileShare.None);
            XmlSerializer  xmlserializer = new XmlSerializer(typeof(string));
            xmlserializer.Serialize(stream, strobj);
            stream.Close();

 
            //Deserialization of String Object
            FileStream readstream = new FileStream("C:\\StrObj.txt", FileMode.Open , FileAccess.Read ,
            FileShare.Read );
            string readdata = (string)xmlserializer.Deserialize(readstream);
            readstream.Close();
            Console.WriteLine(readdata);
            Console.ReadLine();

        }
    }
}

什么是格式化器?
  一個(gè)格式化器用來確定一個(gè)對象的序列格式。它們目的是在網(wǎng)絡(luò)上傳輸一個(gè)對象之前將其序列化成合適的格式。它們提供IFormatter接口。在.NET里提供了兩個(gè)格式化類:BinaryFormatter和SoapFormatter,它們都繼承了IFormatter接口。

  使用序列化
  序列化允許開發(fā)人員保存一個(gè)對象的狀態(tài)并在需要的時(shí)候重構(gòu)對象,同時(shí)很好地支持對象存儲(chǔ)和數(shù)據(jù)交換。通過序列化,開發(fā)人員可以利用Web Service發(fā)送對象到遠(yuǎn)端應(yīng)用程序,從一個(gè)域傳輸對象到另一個(gè)域,以XML的格式傳輸一個(gè)對象并能通過防火墻,或者在應(yīng)用程序間保持安全性或用戶特定信息等等。

相關(guān)文章

  • C# RGB圖像和灰度圖像互轉(zhuǎn)的實(shí)現(xiàn)

    C# RGB圖像和灰度圖像互轉(zhuǎn)的實(shí)現(xiàn)

    在我們的圖像類型教程中定義了RGB顏色模型和灰度格式,本文主要介紹了C# RGB圖像和灰度圖像互轉(zhuǎn)的實(shí)現(xiàn),文中通過代碼介紹的非常清楚,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • C#日期時(shí)間類的使用方法(DateTime類、TimeSpan類與DateTimeOffset類)

    C#日期時(shí)間類的使用方法(DateTime類、TimeSpan類與DateTimeOffset類)

    在C#中我們常使用到關(guān)于時(shí)間的相關(guān)操作,這篇文章主要給大家介紹了關(guān)于C#日期時(shí)間類的使用方法,文中介紹的方法分別包括DateTime類、TimeSpan類與DateTimeOffset類的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • 深入理解C#中new、override、virtual關(guān)鍵字的區(qū)別

    深入理解C#中new、override、virtual關(guān)鍵字的區(qū)別

    下面小編就為大家?guī)硪黄钊肜斫釩#中new、override、virtual關(guān)鍵字的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • c#并行編程示例分享

    c#并行編程示例分享

    這篇文章主要介紹了c#并行編程示例,大家直接看下面的代碼吧
    2014-01-01
  • C#使用OleDb操作Excel和數(shù)據(jù)庫的策略

    C#使用OleDb操作Excel和數(shù)據(jù)庫的策略

    在C#編程中,使用OleDb可以方便地實(shí)現(xiàn)對Excel文件和數(shù)據(jù)庫的操作,本文探討了在C#中使用OleDb技術(shù)操作Excel和數(shù)據(jù)庫的策略,文章詳述了OleDb的定義、配置環(huán)境的步驟,并通過實(shí)際代碼示例演示了如何高效讀寫Excel文件和交互數(shù)據(jù)庫,需要的朋友可以參考下
    2024-05-05
  • C#中的命名空間詳解(Namespace)

    C#中的命名空間詳解(Namespace)

    文章介紹了命名空間在C#編程中的作用,包括命名空間的定義與使用、using關(guān)鍵字的使用以及嵌套命名空間的實(shí)現(xiàn),通過這些機(jī)制,開發(fā)者可以有效地組織和隔離代碼,避免命名沖突,提高代碼的可讀性和可維護(hù)性
    2024-12-12
  • 利用C#實(shí)現(xiàn)記事本的功能的示例代碼

    利用C#實(shí)現(xiàn)記事本的功能的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)簡單的記事本的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C# winform實(shí)現(xiàn)自動(dòng)更新

    C# winform實(shí)現(xiàn)自動(dòng)更新

    這篇文章主要為大家詳細(xì)介紹了C# winform實(shí)現(xiàn)自動(dòng)更新的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • Unity3D游戲開發(fā)數(shù)據(jù)持久化PlayerPrefs的用法詳解

    Unity3D游戲開發(fā)數(shù)據(jù)持久化PlayerPrefs的用法詳解

    在本篇文章里小編給大家整理了關(guān)于Unity3D游戲開發(fā)之?dāng)?shù)據(jù)持久化PlayerPrefs的使用的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下。
    2019-08-08
  • C#使用百度Ueditor富文本框?qū)崿F(xiàn)上傳文件

    C#使用百度Ueditor富文本框?qū)崿F(xiàn)上傳文件

    這篇文章主要為大家詳細(xì)介紹了C#如何使用百度Ueditor富文本框?qū)崿F(xiàn)上傳文件(圖片,視頻等),文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-07-07

最新評論

望谟县| 简阳市| 宾川县| 万州区| 平泉县| 沾化县| 天等县| 黔东| 霍州市| 金秀| 沧州市| 漾濞| 定日县| 威宁| 普格县| 济阳县| 巫溪县| 江西省| 夏邑县| 平武县| 喜德县| 巴彦县| 湄潭县| 如皋市| 黔西县| 大洼县| 新龙县| 新巴尔虎右旗| 新巴尔虎左旗| 平塘县| 靖江市| 涪陵区| 沙田区| 八宿县| 崇州市| 民乐县| 遂溪县| 杭锦旗| 咸宁市| 扎兰屯市| 普安县|