我正在尝试序列化我创建的类的3D锯齿状数组,当我调用BinaryFormatter
时,我在binaryFormatter.Serialize()
内收到以下错误:
NullReferenceException:未将对象引用设置为的实例 宾语 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.GetAssemblyNameId (System.String程序集)(at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:812) System.Runtime.Serialization.Formatters.Binary.ObjectWriter.GetAssemblyId (System.Reflection.Assembly assembly)(at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:807)...
最明显的潜在问题是锯齿状阵列没有正确完全初始化,但情况并非如此。我已经测试了多个初始化策略,如果没有正确初始化,应用程序在序列化之前就会遇到问题。
值得注意的是,在初始化锯齿状数组之后,我遍历数组并为每个索引实例化ExampleClass()。
我在Unity 3D中这样做。
我错过了什么?
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream fileStream = File.Create(Application.persistentDataPath + "/data.dat");
// Initialize the jagged array
ExampleClass[][][] exampleClassArray = new ExampleClass[32][][];
for (int i = 0; i < exampleClassArray.Length; i++)
{
exampleClassArray[i] = new ExampleClass[32][];
for (int j = 0; j < exampleClassArray[i].Length; j++)
{
exampleClassArray[i][j] = new ExampleClass[32];
}
}
// Populate the jagged array
for (int i = 0; i < 32; i++)
{
for (int j = 0; j < 32; j++)
{
for (int k = 0; k < 32; k++)
{
exampleClassArray[i][j][k] = new ExampleClass();
}
}
}
binaryFormatter.Serialize(fileStream, exampleClassArray);
fileStream.Close();