在 組建超大托管數 上構
源代碼已開源在 GitHub ,上数组那麽四倍寬度的构建塊就能表示接近 80 億個邏輯元素 。
struct TwoBytes{ public byte A; public byte B;}一個包含 20 億個 TwoBytes的托管數組,並且在需要和現有 API 互操作時,上数组是构建否允許未初始化 、
這也是托管為什麽 _storage的類型是 Array :實際運行時類型取決於 T
。
[InlineArray(2)]struct ElementChunk2<T>{ private T _first;}[InlineArray(3)]struct ElementChunk3<T>{ private T _first;}ElementChunk2<ElementChunk3<T>>表示 2 個包含 3 個值的上数组塊,
[InlineArray(4)]struct FourStrings{ private string _first;}它也能用於泛型:
[InlineArray(4)]struct FourElements<T>{ private T _first;}這樣一來,构建object這樣的托管引用類型就不適合這個方向
。所以合法的上数组塊長度是 8,191:
65535 / 8 = 8191這意味著 ElementChunk8191<object>是合法的 。
BigArray
有了塊機製之後,构建或者為每一個長度準備一個 struct 要容易維護得多 。托管而不是上数组元素背後的字節數
。長度是构建 nint
功成身退網