C# Serializable 序列化学习
来源:互联网 发布:类似p2p的软件 编辑:程序博客网 时间:2024/05/01 14:03
Serializable
指示一个类可以序列化。 此类不能被继承。将 SerializableAttribute 特性应用于一个类型可指示该类型的实例可以序列化。 如果正在序列化的对象图中的任何类型未应用 SerializableAttribute 特性,公共语言运行时则会引发SerializationException。
即使该类也会实现 ISerializable 接口来控制序列化进程,仍要应用 SerializableAttribute 特性。
默认情况下,类型中由 SerializableAttribute 标记的所有公共和私有字段都会进行序列化,除非该类型实现 ISerializable 接口来重写序列化进程。 默认的序列化进程会排除用 NonSerializedAttribute特性标记的字段。 如果可序列化类型的字段包含指针、句柄或其他某些针对于特定环境的数据结构,并且不能在不同的环境中以有意义的方式重建,则最好将 NonSerializedAttribute 特性应用于该字段。
示例如下:
class Program{ static void Main(string[] args) { MyClass myclass = new MyClass(); Console.WriteLine("Before Serializable:"); Console.WriteLine("Show data:"); myclass.print(); Console.WriteLine("//////////////////////////////////////////////////"); Console.WriteLine("Begin Serializable...."); Stream stream = File.Open("data.xml", FileMode.Create); SoapFormatter formatter = new SoapFormatter(); formatter.Serialize(stream, myclass); stream.Close(); Console.WriteLine("End Serializable."); myclass = null; Console.WriteLine("//////////////////////////////////////////////////"); Console.WriteLine("Begin Deserialize..."); //Opens file "data.xml" and deserializes the object from it. stream = File.Open("data.xml", FileMode.Open); formatter = new SoapFormatter(); myclass = (MyClass)formatter.Deserialize(stream); Console.WriteLine("End Deserialize..."); Console.WriteLine("Show data:"); myclass.print(); Console.ReadLine(); } } [Serializable] public class MyClass { public int member1; public string member2; public string member3; public double member4; [NonSerialized] public string member5; public MyClass() { member1 = 11; member2 = "hello"; member3 = "hello"; member4 = 3.14159265; member5 = "hello world!"; } public void print() { Console.WriteLine("member1 = '{0}'", member1); Console.WriteLine("member2 = '{0}'", member2); Console.WriteLine("member3 = '{0}'", member3); Console.WriteLine("member4 = '{0}'", member4); Console.WriteLine("member5 = '{0}'", member5); } }
输出内容:
完毕。
0 0
- C# Serializable 序列化学习
- c#序列化学习(一)
- C#序列化、反序列化学习
- C#序列化、反序列化学习
- .NET序列化学习
- java 序列化学习
- java 序列化学习
- java序列化学习
- 序列化学习
- C#序列化与反序列化学习
- 最新 C#序列化与反序列化学习
- .Net 序列化学习笔记
- 我的序列化学习
- Java序列化学习笔记
- DotNet 序列化学习笔记
- java序列化学习笔记
- java 序列化学习笔记
- Java序列化学习笔记
- partitoner笔记
- java 采用MD5加密解密
- ios7打开相册和相机时状态栏不隐藏的问题
- LOCAL APIC
- NSNULL判空Category
- C# Serializable 序列化学习
- asm volatile内嵌汇编用法
- 描述在浏览器中输入一个网址后的发生的事情
- 布丰投针问题
- 蜕变之路
- Vijos P1443 银河英雄传说个人通过/递交:11/25(44%)
- hadoop学习-wordcount程序c++重写执行
- 链表的正逆序打印 java语言实现
- Binary Tree Maximum Path Sum--一次没A过的题