1

我正在编写一个类来表示 SQL 查询中的一行。我希望通过类的 indexer 属性访问字段数据。如果我将数据加载到内部对象列表中,这很简单。我已经尝试过这个并且对原始人的拳击不满意。拳击增加了 20% 的内存需求。我想将原语存储为类中的原语。DataTable 类通过为从 IDataReader 返回的架构中的每一列创建数组来存储基元。我以这种方式实现了一个类,但我更喜欢将数据与行对象一起存储,而不是存储在行内部引用的列中。

有什么想法可以做到这一点吗?

4

2 回答 2

2

只有 20% 的开销?你很幸运!我刚刚清理了一些代码,它增加了 40 倍的性能下降(不计算额外内存的影响)!无论如何,防止使用的典型方法object是开始使用泛型。这是一个简化的示例:

class RowRepresenter<T>
{
    //....
    public T this[int index] {get; set;}  // implementation left out
}

// initialize, suppose the properties (indexers) should be ints:
RowRepresenter<int> myInstance = new RowRepresenter<int>();
myInstance.LoadData();

// get data (i.e., your indexer)
int somefield = myInstance[2];   // no overhead, no casting required
于 2009-12-03T21:00:27.633 回答
2

您可以生成结构类型来表示一行。它可以动态完成,并且可以这样做,因此不会有任何拳击。我不确定这是否值得努力

于 2009-12-03T21:02:39.800 回答