有效的c# 2D列表

本文关键字:列表 2D 有效 | 更新日期: 2023-09-27 18:14:22

我正在为一个程序创建一个状态管理器。每个州都有一个ID和一个state类。我可以通过使用add()函数添加任意数量的统计数据。使用Change(ID)函数可以将状态更改为列表中具有匹配ID的状态。然后在对Manager的进一步调用中将引用set状态。

我想创建一个2D列表:

//short = ID No, IState = Sate Interface all states are based on
List<short, IState> StateList = new List<short, IState>();

我认为对于c#,我需要创建一个列表的列表来获得一个2D,但我不确定,因为智能感知将其标记为列表, T为参数。有更好的方法吗?如果这是非常基本的,我很抱歉,因为我对整个列表的概念非常陌生。

有效的c# 2D列表

List替换为Dictionary。你想要一个键/值对作为你的列表项,Dictionary提供了。

Dictionary<short, IState> StateList = new Dictionary<short, IState>();

你可以在字典中找到你想要的状态:

// Retrieve State 5
var state5 = StateList[5];

可以使用Dictionary对象吗?这些对于名称/值对来说是非常好的。

你可以将它实现为

Dictionary<short, IState> StateList = new Dictionary<short, IState>();

那么就做

StateList.Add(1, new State() { blah, blah });

您可以根据需要创建List<Tuple<short, IState>>

但是,如果列表中项目的顺序对您来说不重要,您可以使用Dictionary<short, IState>

如果顺序很重要,但恰好是ID(例如,低ID在高ID之前),您可以使用SortedDictionary<short, IState>