C#二进制序列化实例分析

 更新时间:2015年05月19日 15:22:42   作者:张林春  
这篇文章主要介绍了C#二进制序列化,实例分析了C#二进制序列化的方法,代码中有较为详尽的注释说明,便于理解,需要的朋友可以参考下

本文实例讲述了C#二进制序列化的方法。分享给大家供大家参考。具体如下:

using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
namespace WebApplication1.Serialize
{
  public partial class Binary1 : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    //二进制序列化不同于 XMLSerializer 类,后者只序列化公共字段。
    protected void Button1_Click(object sender, EventArgs e)
    {
      MyObject obj = new MyObject();
      obj.n1 = 1;
      obj.n2 = 24;
      obj.str = "Some String";
      IFormatter formatter = new BinaryFormatter();
      Stream stream = new FileStream("C:/MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
      formatter.Serialize(stream, obj);
      stream.Close();
    }
    [Serializable]
    public class MyObject
    {
      public int n1 = 0;
      public int n2 = 0;
      public String str = null;
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
      IFormatter formatter = new BinaryFormatter();
      Stream stream = new FileStream("C:/MyFile.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
      MyObject obj = (MyObject)formatter.Deserialize(stream);
      stream.Close();
      // Here's the proof.
      Response.Write("n1: {0}"+ obj.n1+"<br/>");
      Response.Write("n2: {0}" + obj.n2 + "<br/>");
      Response.Write("str: {0}" + obj.str + "<br/>");
    }
    //上面所用的 BinaryFormatter 非常有效,生成了非常简洁的字节流。
    //通过该格式化程序序列化的所有对象也可以通过该格式化程序进行反序列化,这使该工具对于序列化将在 .NET Framework 上被反序列化的对象而言十分理想。
    //需要特别注意的是,在反序列化一个对象时不调用构造函数。出于性能方面的原因对反序列化施加了该约束。
    //但是,这违反了运行库与对象编写器之间的一些通常约定,开发人员应确保他们在将对象标记为可序列化时了解其后果。
    //如果可移植性是必需的,则转为使用 SoapFormatter。
    //只需用 SoapFormatter 代替上面代码中的 BinaryFormatter,
    //并且如前面一样调用 Serialize 和 Deserialize。此格式化程序为上面使用的示例生成以下输出。
  }
}

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • C#使用委托的形式调用线程代码实例

    C#使用委托的形式调用线程代码实例

    今天小编就为大家分享一篇关于C#使用委托的形式调用线程代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • .net使用cap实现消息异步处理

    .net使用cap实现消息异步处理

    CAP 是一个基于 .NET Standard 的 C# 库,它是一种处理分布式事务的解决方案,同样具有 EventBus 的功能,它具有轻量级、易使用、高性能等特点,本文给大家介绍了.net下使用cap实现消息异步处理,需要的朋友可以参考下
    2024-05-05
  • 深入浅出23种设计模式

    深入浅出23种设计模式

    本文给大家详解23种设计模式,理解设计模式有助于在程序开发过程中灵活应用,需要的朋友可以参考下
    2015-08-08
  • C#圆形头像框制作并从数据库读取

    C#圆形头像框制作并从数据库读取

    本文主要介绍了C#圆形头像框制作并从数据库读取,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 详解c# 委托链

    详解c# 委托链

    这篇文章主要介绍了c# 委托链的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 判断图片-判断位图是否是黑白图片的方法

    判断图片-判断位图是否是黑白图片的方法

    近来工作需要判断图片否是是彩色的,由于是十万张以上的大批量理处,所以通过序程来动自判断。
    2013-05-05
  • 详解C#的排列组合

    详解C#的排列组合

    本文详细介绍了C#中的排列组合以及具体实现代码,如下所示,希望对大家有所帮助
    2016-11-11
  • C#实现鼠标左右键切换效果

    C#实现鼠标左右键切换效果

    这篇文章主要为大家详细介绍了如何利用C#实现鼠标左右键切换功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C# Winform实现导出DataGridView当前页以及全部数据

    C# Winform实现导出DataGridView当前页以及全部数据

    基本上,所有的业务系统都会要求有导出的功能,所以这篇文章主要为大家介绍了如何利用Winform实现原生DataGridView的导出功能,需要的可以参考一下
    2023-07-07
  • C# Winform实现波浪滚动效果

    C# Winform实现波浪滚动效果

    这篇文章主要为大家详细介绍了C# Winform实现波浪滚动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11

最新评论