在C#2.0中定义“灵活表”的数据结构?

时间:2013-03-26 15:53:31

标签: c# data-structures dictionary hashtable c#-2.0

我正在尝试在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]之外还有其他任何东西。

1 个答案:

答案 0 :(得分:1)

在C#4.0中,您可以使用ExpandoObject轻松实现这些类型的结构,这为您提供了dynamic关键字的更好开发体验。有关简介,请参阅:http://msdn.microsoft.com/en-us/magazine/ff796227.aspx

在C#2.0中,您可以使用实现IExpando的对象获得类似的行为。有关详细信息,请参阅What is IExpando and where is it used?

如果您选择不走这条路线,那么您可能希望将内部实现从两个列表切换到IDictionary<String, Object>,因为它更容易实现并且很快就会超越性能中的双列表实现字段已添加。