我正在为我的大学课程制作2048克隆。我有一个自定义类:
public class Field
{
public int value;
public bool stop;
}
这些字段的数组:
public Field[,] gameArray = new Field[4, 4];
这些是在自定义类中。 以下是我用于在项目页面cs文件中保存和加载此数组的方法:
private async void saveAsync()
{
string jsonContents = JsonConvert.SerializeObject(currentGame.gameArray);
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
StorageFile textFile = await localFolder.CreateFileAsync(saveFileName,
CreationCollisionOption.ReplaceExisting);
using (IRandomAccessStream textStream = await textFile.OpenAsync(FileAccessMode.ReadWrite))
{
using (DataWriter textWriter = new DataWriter(textStream))
{
textWriter.WriteString(jsonContents);
await textWriter.StoreAsync();
}
}
}
private async void loadAsync()
{
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
StorageFile textFile = await localFolder.GetFileAsync(saveFileName);
using (IRandomAccessStream textStream = await textFile.OpenReadAsync())
{
using (DataReader textReader = new DataReader(textStream))
{
if ((uint)textStream.Size != 0)
{
uint textLength = (uint)textStream.Size;
await textReader.LoadAsync(textLength);
string jsonContents = textReader.ReadString(textLength);
currentGame.gameArray = JsonConvert.DeserializeObject<Field[,]>(jsonContents);
}
else currentGame.Reset();
}
update();
}
}
currentGame是自定义类的一个实例。重启();方法,好吧,重置所有字段,将它们的值设置为0. Update();方法用于检查玩家是否丢失(尚未实现),运行saveAsync();方法并用这样的线填充板(颜色方法只改变背景颜色):
txt10.Text = currentGame.gameArray[0, 0].value.ToString();
color(b10, currentGame.gameArray[0, 0].value);
,第一行是给我一个NullReferenceException。我可能搞砸了数组的序列化和反序列化,但我完全不知道它是什么以及如何解决这个问题,这是我对序列化的第一次尝试,我基本上是从互联网上复制它。我是否需要传递对loadAsync()的引用;方法