类通常包含不应被序列化的字段。例如,假设一个类将线程 ID 存储在成员变量中。当反序列化该类时,在序列化该类时为其存储 ID 的线程可能不再运行,因此序列化该值没有意义。通过用 NonSerialized 属性标记成员变量,可以防止它们被序列化,如下所示。
[Serializable]
public class MyObject
{
public int n1;
[NonSerialized] public int n2;
public String str;
}
如果可能,使可能包含安全敏感数据的对象不可序列化。如果必须序列化该对象,请将 NonSerialized 属性应用于存储敏感数据的特定字段。如果不将这些字段从序列化中排除,请注意,它们存储的数据将对有权进行序列化的任何代码公开。有关编写安全序列化代码的更多信息,请参见安全和序列化。