C# 另存为项目

C# 另存为项目,c#,wpf,save,C#,Wpf,Save,如何存储(保存)变量,以便在关闭并再次运行程序后使用它?我不能使用saveFileDialog,因为它是2D数组。其他程序也有自己的扩展。我也可以做我自己的分机吗?类似于“将项目另存为…”。如果要将某些对象保存到磁盘,您需要为数据设计一些文件格式,或者使用现有的通用格式 在.Net中,最简单的方法可能是使用: void Save(SomeType obj, string fileName) { using (var stream = File.OpenWrite(fileName))

如何存储(保存)变量,以便在关闭并再次运行程序后使用它?我不能使用saveFileDialog,因为它是2D数组。其他程序也有自己的扩展。我也可以做我自己的分机吗?类似于“将项目另存为…”。

如果要将某些对象保存到磁盘,您需要为数据设计一些文件格式,或者使用现有的通用格式

在.Net中,最简单的方法可能是使用:

void Save(SomeType obj, string fileName)
{
    using (var stream = File.OpenWrite(fileName))
    {
        var formatter = new BinaryFormatter();
        formatter.Serialize(stream, obj);
    }
}
obj
对象及其引用的所有对象都必须是可序列化的。大多数基本类型已经可以序列化了,您可以通过使用使自己的类型可以序列化

Load()
方法与此类似,只是它将使用
File.OpenRead()
formatter.Deserialize()


如何选择文件名取决于您,但您当然可以使用
SaveFileDialog

.NET
中有不同的sirialization类型。他们每个人都有自己的优点和缺点。所以你应该选择最适合你需要的。 花点时间,至少对这些问题有一个大致的了解是值得的

例如:

最常见的方法是二进制序列化(由svick提供),它速度快,内存占用少,但在可伸缩性方面肯定不如其他方法灵活。原因 standart
.NET
序列化也会保存类型信息,这会导致与实际保存的类型(而不仅仅是数据)的强耦合

有一个答案很难解释所有的事情,所以我建议你看看这里


祝你好运

以防你不知道(因为你询问了“制作”扩展名),文件扩展名只是所用格式的指示符,这样windows资源管理器就可以更轻松地打开它,并且你可以根据自己的需要命名它们。如果我没记错的话,Adobe的.AI格式是PDF格式。有时,为一个文件指定自己的扩展名只是为了将它与程序关联起来是很有用的,即使它实际上只是一个文本文件或其他文件。而这些并不是唯一可能的序列化格式。您还可以使用一些外部库,将对象序列化为JSON或协议缓冲区。当然,这些格式都是内置的+你有所有其他的第三部分库。