1

我正在尝试在 C# 2.0 中实现一个可以像这样表示的数据结构:

  | field1 | field2 | field3 | ... (variable length) ...
  +--------+--------+--------+-------------------
1 | int0   | float0 | bool0  | ...
2 | int1   | float1 | bool1  | ...
. |
. |
. |
(variable) ...

目前,我正在考虑一些非常基本的事情:

public class DataStructure {
    string name;
    List<string> fieldNames;
    List<Item> items;
}

public class Item {
    List<object> values;
}

然后,您可以使用隐式定义要检索的类型的方法(即bool GetBool (string field), int GetInteger (string field))进行访问,因此您可以使用一小组内置类型和自定义类(例如CustomBaseObject)。

是否有任何现有的数据结构实现可以做到这一点?这是解决我在这里提出的问题的另一种(更好的)方法吗?(考虑访问和修改操作的复杂性)

另外,我不知道装箱/拆箱的最佳方法是什么List<object> values,如果除了像(type)values[index].

4

1 回答 1

1

在 C# 4.0 中,您可以使用 获得这些结构的体面实现,从而为您提供更好的关键字ExpandoObject开发体验。dynamic请参阅:http: //msdn.microsoft.com/en-us/magazine/ff796227.aspx以获得很好的介绍。

在 C# 2.0 中,您可以使用实现IExpando. 请参阅什么是 IExpando 以及它在哪里使用?详情。

如果您选择不走这条路,那么您可能希望将内部实现从两个列表切换到一个,IDictionary<String, Object>因为它更容易实现,并且随着字段的添加在性能上迅速超越双列表实现。

于 2013-03-26T15:56:02.480 回答