C# 从ArrayList保存和还原值

C# 从ArrayList保存和还原值,c#,store,C#,Store,我在运行时将一些字符串值存储在数组列表中。当应用程序关闭时,我希望将数组列表中的数据存储在另一个位置,以便下次启动应用程序时打开并检索数据。有哪些可能的方法可以做到这一点?您可以序列化阵列列表并将其写入磁盘,然后加载文件并将其反序列化为对象: public static XDocument Serialize<T>(T objectIn, Type[] extraTypes) { try { var target

我在运行时将一些字符串值存储在数组列表中。当应用程序关闭时,我希望将数组列表中的数据存储在另一个位置,以便下次启动应用程序时打开并检索数据。有哪些可能的方法可以做到这一点?

您可以
序列化
阵列列表并将其写入磁盘,然后加载文件并
将其反序列化为对象:

    public static XDocument Serialize<T>(T objectIn, Type[] extraTypes)
    {
        try
        {
            var target = new XDocument();
            XmlSerializer s = extraTypes != null ? new XmlSerializer(objectIn.GetType(), extraTypes) : new XmlSerializer(objectIn.GetType());
            s = extraTypes != null
                ? new XmlSerializer(objectIn.GetType(), extraTypes)
                : new XmlSerializer(objectIn.GetType());

            var writer = target.CreateWriter();

            s.Serialize(writer, objectIn);

            writer.Close();
            return target;
        }
        catch (Exception ex)
        {
            throw new Exception(string.Format("Could not serialize object: {0}", ex.Message));
        }
    }

    public static T Deserialize<T>(XDocument xDocument, string defaultNamespace)
    {
        XmlSerializer s = new XmlSerializer(typeof(T), defaultNamespace);

        T result = (T)s.Deserialize(xDocument.CreateReader());

        return result;
    }
公共静态XDocument序列化(T objectIn,类型[]extraTypes)
{
尝试
{
var target=new XDocument();
XmlSerializer s=extraTypes!=null?新XmlSerializer(objectIn.GetType(),extraTypes):新XmlSerializer(objectIn.GetType());
s=外部类型!=null
?新的XmlSerializer(objectIn.GetType(),extraTypes)
:新的XmlSerializer(objectIn.GetType());
var writer=target.CreateWriter();
s、 连载(作者、对象);
writer.Close();
回报目标;
}
捕获(例外情况除外)
{
抛出新异常(string.Format(“无法序列化对象:{0}”,ex.Message));
}
}
公共静态T反序列化(XDocument XDocument,字符串defaultNamespace)
{
XmlSerializer s=新的XmlSerializer(typeof(T),defaultNamespace);
T result=(T)s.Deserialize(xDocument.CreateReader());
返回结果;
}

您可以
序列化
阵列列表并将其写入磁盘,然后加载文件并
反序列化
到对象:

    public static XDocument Serialize<T>(T objectIn, Type[] extraTypes)
    {
        try
        {
            var target = new XDocument();
            XmlSerializer s = extraTypes != null ? new XmlSerializer(objectIn.GetType(), extraTypes) : new XmlSerializer(objectIn.GetType());
            s = extraTypes != null
                ? new XmlSerializer(objectIn.GetType(), extraTypes)
                : new XmlSerializer(objectIn.GetType());

            var writer = target.CreateWriter();

            s.Serialize(writer, objectIn);

            writer.Close();
            return target;
        }
        catch (Exception ex)
        {
            throw new Exception(string.Format("Could not serialize object: {0}", ex.Message));
        }
    }

    public static T Deserialize<T>(XDocument xDocument, string defaultNamespace)
    {
        XmlSerializer s = new XmlSerializer(typeof(T), defaultNamespace);

        T result = (T)s.Deserialize(xDocument.CreateReader());

        return result;
    }
公共静态XDocument序列化(T objectIn,类型[]extraTypes)
{
尝试
{
var target=new XDocument();
XmlSerializer s=extraTypes!=null?新XmlSerializer(objectIn.GetType(),extraTypes):新XmlSerializer(objectIn.GetType());
s=外部类型!=null
?新的XmlSerializer(objectIn.GetType(),extraTypes)
:新的XmlSerializer(objectIn.GetType());
var writer=target.CreateWriter();
s、 连载(作者、对象);
writer.Close();
回报目标;
}
捕获(例外情况除外)
{
抛出新异常(string.Format(“无法序列化对象:{0}”,ex.Message));
}
}
公共静态T反序列化(XDocument XDocument,字符串defaultNamespace)
{
XmlSerializer s=新的XmlSerializer(typeof(T),defaultNamespace);
T result=(T)s.Deserialize(xDocument.CreateReader());
返回结果;
}

您可以使用
从文件中读取
写入
,或将值存储在windows注册表中。 要读取/写入文件,请使用:

StreamReader sr = new StreamReader(@"C:/store.dll"); //for reading
StreamWriter sw = new StreamWriter(@"C:/store.dll"); //for writing
这是最基本的。这里有两篇关于这方面的文章:

  • 我用它来存储一个简单游戏的高分。:)


    是一个很好的使用Windows注册表的教程。

    您可以使用
    从文件中读取
    写入
    ,或将值存储在Windows注册表中。 要读取/写入文件,请使用:

    StreamReader sr = new StreamReader(@"C:/store.dll"); //for reading
    StreamWriter sw = new StreamWriter(@"C:/store.dll"); //for writing
    
    这是最基本的。这里有两篇关于这方面的文章:

  • 我用它来存储一个简单游戏的高分。:)


    是一个很好的使用Windows注册表的教程。

    为什么
    .dll
    ?Dll用于库,而不是数据。只是一个示例。它可以是任何类型的文件…:有没有其他更“隔离”的方法来保存和恢复我的数据?我不希望使用窗口注册表。您可以创建隐藏文件。:)这样更好吗?如果我没有一个D磁盘分区,它会存储在其他地方,还是不存储?我如何知道每台电脑的驱动器号是什么?:-)为什么
    .dll
    ?Dll用于库,而不是数据。只是一个示例。它可以是任何类型的文件…:有没有其他更“隔离”的方法来保存和恢复我的数据?我不希望使用窗口注册表。您可以创建隐藏文件。:)这样更好吗?如果我没有一个D磁盘分区,它会存储在其他地方,还是不存储?我如何知道每台电脑的驱动器号是什么?:-)我如何调用此方法?我假设T objectIn是我的arraylist,什么是类型[]extraTypesHow我可以调用这个方法吗?我想T objectIn是我的arraylist,什么是类型[]Extratypes你真的不应该再使用
    arraylist
    。你应该使用
    List
    这样你就有了一个强类型的集合。你真的不应该再使用
    ArrayList
    。您应该使用
    List
    ,这样您就有了一个强类型的集合。