如何在 C# 中将集合写入文件

本文关键字:集合 文件 | 更新日期: 2023-09-27 18:30:40

我目前有一个winForms程序,我对编程相当陌生。现在我有一个项目类

public class Item
{
    public string @Url { get; set; }
    public string Name { get; set; }
    public double Price { get; set; }
    public int Index { get; set; }
    public Item(string @url, string name, double price)
    {
        this.Url = url;
        this.Name = name;
        this.Price = price;
    }
    public override string ToString()
    {
        return this.Name;
    }
}

并在整个程序中存储在字典中

Dictionary<int, Item>

如何创建新的文件类型 (.buf) 并使其保存字典以便可以打开?

如何在 C# 中将集合写入文件

如果你想把字典序列化为一个文件,我建议你参考这里,这里和这里。

更新

请务必查看所有链接,因为有多种方法可以执行此操作,但这是一种方法 - 通过遵循此信息并添加

public Item() { }

然后,我可以使用 XamlServices 执行以下操作(您需要在项目中添加对 System.Xaml 的引用):

class Program
{
    static void Main()
    {
        Item newItem = new Item( "http://foo", "test1", 1.0 );
        var values = new Dictionary<int,Item>();
        values.Add(1,newItem);                        
        using( StreamWriter writer = File.CreateText( "serialized.buf" ) )
        {                
            XamlServices.Save( writer, values );    
        }
        using( StreamReader tr = new StreamReader( "serialized.buf" ) )
        {
            Dictionary<int, Item> result = (Dictionary<int, Item>)XamlServices.Load( tr );
            //do something with dictionary here
            Item retrievedItem = result[1];                
        }                                                         
    }
}

有关数据库的信息,请参阅此处和此处。如果你想开始使用数据库和WinForms,我建议这样做。

要决定平面文件和数据库,请参阅此处和此处的答案。很抱歉所有链接,但信息就在那里(我知道当你开始时很难找到正确的搜索词)。根据我自己的经验,您是否使用数据库取决于: -

  • 要执行的操作(查询、创建、删除、更新、删除)的复杂性。
  • 要存储的数据的结构。
  • 应用程序将运行的位置。例如,如果它将是路由器上的嵌入式应用程序(我认为您的winforms应用程序不会),那么文件可能是您唯一的选择。
  • 与上一点类似,您希望应用程序具有多轻量级和自包含性。
  • 要存储的数据量。
using (var file = File.OpenWrite("myfile.buf"))
foreach (var item in dictionary)
file.WriteLine("[{0} {1}]", item.Key, item.Value);