如何在C#中存储数据元组?

CJ7*_*CJ7 2 c# arrays collections tuples data-structures

我想在C#中用硬编码信息的方法如下:

1423, General 
5298, Chiro 
2093, Physio 
9685, Dental 
3029, Optics
Run Code Online (Sandbox Code Playgroud)

我想再将这些数据引用如下:

"The description for category 1423 is " & MyData.GetDescription[1423] 
"The id number for General is " & MyData.GetIdNumber("General")
Run Code Online (Sandbox Code Playgroud)

在C#中执行此操作的最佳方法是什么?

Jon*_*eet 6

好吧你可以使用Tuple<int, string>- 但我建议创建一个类来存储这两个值:

public sealed class Category
{
    private readonly int id;
    public int Id { get { return id; } }

    private readonly string description;
    public string Description { get { return description; } }

    public Category(int id, string description)
    {
        this.id = id;
        this.description = description;
    }

    // Possibly override Equals etc
}
Run Code Online (Sandbox Code Playgroud)

然后,为了查找目的,你可以有一个Dictionary<string, Category>用于描述查找和一个Dictionary<int, Category>用于ID查找 - 或者如果你确信类别的数量会保持很小,你可以使用一个List<Category>.

具有高于仅使用此命名类型的好处Tuple或简单的Dictionary<string, int>Dictionary<int, string>有:

  • 您可以传递具体类型,在数据模型中使用等
  • 你不会最终混淆Category任何其他逻辑上只是a int和a的数据类型string
  • 您的代码会更清楚,当它用来读取IdDescription比性能Item1Item2Tuple<,>.
  • 如果以后需要添加其他属性,则更改很少.