数据结构定义“灵活表”;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# 4.0中,您可以使用ExpandoObject
获得这些类型结构的体面实现,这为您提供了使用dynamic
关键字的更好开发体验。请参阅:http://msdn.microsoft.com/en-us/magazine/ff796227.aspx获得一个很好的介绍。
在c# 2.0中,您可以通过实现IExpando
的对象获得类似的行为。看看什么是IExpando,它在哪里使用?对细节。
如果您选择不走这条路,那么您可能需要将内部实现从两个列表切换到IDictionary<String, Object>
,因为它更容易实现,并且随着字段的添加,在性能上很快超过双列表实现。