有效的C#2D列表

时间:2013-05-20 18:36:35

标签: c# list object

我正在为一个程序创建一个State-Manager。每个州都有一个ID和一个州级。我可以使用Add()函数添加任意数量的统计数据。使用更改(ID)功能将使用匹配的ID将状态更改为列表中的状态。然后,ander进一步调用Manager将引用设置状态。

我想创建一个2D列表:

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

我认为对于C#我需要创建一个列表列表以获得2D但我不确定,因为Intellisense将其标记为 List&lt; T> ,T为参数。有没有更好的方法呢?如果这是非常基本的,我会道歉,因为我对整个列表的想法都很新。

3 个答案:

答案 0 :(得分:2)

只需将List替换为Dictionary即可。您需要键/值对作为列表项,而词典提供。

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

然后,您可以索引到字典中以查找所需的状态:

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

答案 1 :(得分:2)

你能使用Dictionary对象吗?这些非常适合名称/值对。

您可以将其实现为

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

然后就这样做

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

答案 2 :(得分:0)

如果需要,您可以创建List<Tuple<short, IState>>

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

如果订单很重要,但恰好是ID(例如,较低的ID位于较高的ID之前),则可以使用SortedDictionary<short, IState>