1

我正在为一个程序创建一个状态管理器。每个状态都有一个 ID 和一个 State 类。我可以使用 Add() 函数添加任意数量的统计信息。使用 Change(ID) 函数会将状态更改为列表中具有匹配 ID 的状态。然后,ander 对 Manager 的进一步调用将引用设置状态。

我想这样创建一个二维列表:

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

我认为对于 C#,我需要创建一个列表列表才能获得 2D,但我不确定 Intellisense 将其标记为List < T >,其中 T 是参数。有没有更好的方法来做到这一点?如果这是非常基本的,我很抱歉,因为我对整个 List 想法很陌生。

4

3 回答 3

2

只需替换ListDictionary. 您想要一个键/值对作为您的列表项,这是字典提供的。

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

然后,您可以索引到字典中以找到您想要的状态:

// Retrieve State 5
var state5 = StateList[5];
于 2013-05-20T18:44:40.560 回答
2

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

您可以将其实现为

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

然后就做

StateList.Add(1, new State() { blah, blah });
于 2013-05-20T18:45:56.910 回答
0

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

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

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

于 2013-05-20T18:44:29.987 回答