簡體   English   中英

是否可以使用c#將結構存儲在文本文件中

[英]is it possible to store structure in Text file using c#

我喜歡將結構存儲到文本文件中,也檢索相同的文件。

我創建了一個結構名稱,學生詳細信息包括值

studentid,學生姓名,學生avg.i我希望將這種結構詳細信息存儲在Textfile中,以供許多學生使用。之后,我想使用學生ID從Textfile中獲取詳細信息。我正在Windows應用程序中工作。是否可以在c#中使用。

您可以將結構集合存儲在XML文件中,該文件是結構化文本。
這是一個快速入門的示例:

    using System.Collections.Generic;
    using System.IO;
    using System.Xml;
    using System.Xml.Serialization;

    public class Student {
        [XmlElement("id")]
        public int id;
        [XmlElement("name")]
        public string name;
    }

    [XmlRoot("students")]
    public class Students {
        [XmlElement("students")]
        public List<Student> students = new List<Student>();
    }

    class Program {
        static void Main(string[] args) {
            Students s = new Students();
            s.students.Add(new Student() { id = 1, name = "John Doe" });
            s.students.Add(new Student() { id = 2, name = "Jane Doe" });
            XmlSerializer xs = new XmlSerializer(typeof(Students));
            using (FileStream fs = new FileStream("students.xml", FileMode.Create, FileAccess.Write)) {
                xs.Serialize(fs, s);
            }
        }
    }

您將得到類似:

<?xml version="1.0"?>
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <students>
    <id>1</id>
    <name>John Doe</name>
  </students>
  <students>
    <id>2</id>
    <name>Jane Doe</name>
  </students>
</students>

您也可以看看XmlSerializer

在XML文檔中對對象進行序列化和反序列化。 XmlSerializer使您可以控制如何將對象編碼為XML。

嗯,有XML

您可以使用xml文件; xml本質上是結構化的文本,這似乎正是您想要的。 從System.Xml命名空間開始。

像Paolo(和其他)一樣,我將創建一個特定的類和一個如下的容器類:

[DataContract]
public class Student
{
    [DataMember]
    public int ID { get; set; }

    [DataMember]
    public string FirstName { get; set; }

    [DataMember]
    public string LastName { get; set; }
}

[DataContract]
public class StudentList
{
    [DataMember]
    public string Name { get; private set; }

    [DataMember]
    public List<Student> Students { get; private set; }

    public StudentList(string name)
    {
        Name = name;
        Students = new List<Student>();
    }
}

然后可以通過DataContractSerializer對它們進行反序列化。 以上課程只是一個粗略的起點。 根據您的需求,您必須考慮私有設置者,不變性等。

但是,如果您有這樣的特定類,則可以輕松地創建BindingSource ,將StudentList.Students放入其中,然后將此BindingSource放入DataGridView中以可視化並更改列表。

您只需要將對象序列化為File即可 檢查文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM