序列化的问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 20:29:12
using System;

namespace PetShop.Model {

[Serializable]
public class AddressInfo {

// Internal member variables
private string firstName;

public AddressInfo() { }

public AddressInfo(string firstName)
{
this.firstName = firstName;
}

// Properties
public string FirstName {
get { return firstName; }
set { firstName = value; }
}

}
}
}
-----------------------------------------------------------------
请看代码。代码来自PetShop4.0中的一部分
[Serializable]这个是什么意思。如果不要,会怎么样?

表示AddressInfo这个类可以被序列化。

如果不加,在对AddressInfo这个类序列化时会报错。

序列化是指将类的实例变成数据流的方式(可以是二进制,也可以是XML),以便于你可以把这个实例保存到文件,或通过网络发送出去。

相应的还有反序列化,把数据流变回对象的实例形式。

这是一个类属性的标记,加上这个标记,就可以让类有了被指定的属性类处理的能力。

Serializable的标记来自于SerializableAttribute类。这个属性类可以令被标记的类可序列化和反序列化,就是指这个类可以自动地支持向持久媒体(如XML文件等)上保存内容和加载内容。

如果你不写这个属性标记,运行时在对address进行持久化时会出现异常。也就是说在存盘时会出现异常错误。