为什么不编写一个简单的测试应用程序来找出答案?这是我写的一个(请原谅 C# 而不是 VB,但我现在打开了 C# Express 版本的 VS2008)。
[Serializable]
class TestClass
{
[NonSerialized]
public Queue<string> queue = new Queue<string>();
}
class Program
{
static void Main(string[] args)
{
var obj = new TestClass();
Console.WriteLine("Original is null? {0}", obj.queue == null);
var stream = new MemoryStream();
var formatter = new BinaryFormatter();
formatter.Serialize(stream, obj);
stream.Position = 0L;
var copy = (TestClass)formatter.Deserialize(stream);
Console.WriteLine("Copy is null? {0}", copy.queue == null);
Console.ReadLine();
}
}
这个的输出是
Original is null? False
Copy is null? True
现在您肯定知道,反序列化时它将为空。Kent 已经在另一篇文章中解释了为什么会这样,以及你可以做些什么,所以我不会重复它。