数据结构定义“灵活表”;c# 2.0中

本文关键字:灵活表 定义 数据结构 | 更新日期: 2023-09-27 18:05:53

我正在尝试在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]那样铸造它。

数据结构定义“灵活表”;c# 2.0中

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

在c# 2.0中,您可以通过实现IExpando的对象获得类似的行为。看看什么是IExpando,它在哪里使用?对细节。

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