【发布时间】:2010-12-10 13:05:53
【问题描述】:
下午好,
请帮忙。为了规避 .NET 中的 2Gb 对象限制,我创建了一个在堆上分配内存的类,这使我可以创建不超过可用 RAM 限制的数组。然而,为了便于开发(因为它是一个概念证明),它被硬编码为 long。现在它可以工作了,我一直在尝试更改代码以使用泛型,以便我可以将相同的代码用于多种类型。
在分配内存和正确索引数组时,我需要一个与数组将保存的类型相同的指针数组,即长数组需要long*[] myLargeArray。问题是当我使用泛型时,这个声明变成了T*[] myLargeArray,它总是产生错误'Cannot take the address of, get the size of, or declare a pointer to a managed type ('T') '
提前致谢。
PS 在有人问之前,是的,我确实需要这么大的数组。
二维数组的代码示例:
LargeArray <int> myArray = new LargeArray<int>(x, y);
public unsafe class LargeArray where T : struct
{
...
private T*[] tArr;
...
public LargeArray(long sizeI, long sizeJ)
{
...
myLargeArray = new T*[sizeI];
...
}
}
【问题讨论】: