相关疑难解决方法(0)

C#中多维数组和数组数组之间有什么区别?

C#中多维数组double[,]和数组数组之间有什么区别double[][]

如果有差异,每个人的最佳用途是什么?

c# jagged-arrays multidimensional-array

437
推荐指数
7
解决办法
13万
查看次数

大型多维数组(Jagged Array)C#的解决方法?

我正在尝试初始化三维数组以加载体素世界.

地图的总大小应为(2048/1024/2048).我试图初始化一个"int" 的锯齿状数组,但是我抛出了一个内存异常.尺寸限制是多少?我桌子的大小:2048*1024*2048 = 4'191'893'824

有人知道解决这个问题吗?

// System.OutOfMemoryException here !
int[][][] matrice = CreateJaggedArray<int[][][]>(2048,1024,2048);
// if i try normal Initialization I also throws the exception
int[, ,] matrice = new int[2048,1024,2048];

    static T CreateJaggedArray<T>(params int[] lengths)
    {
        return (T)InitializeJaggedArray(typeof(T).GetElementType(), 0, lengths);
    }

    static object InitializeJaggedArray(Type type, int index, int[] lengths)
    {
        Array array = Array.CreateInstance(type, lengths[index]);
        Type elementType = type.GetElementType();

        if (elementType != null)
        {
            for (int i = 0; i < lengths[index]; i++)
            {
                array.SetValue( …
Run Code Online (Sandbox Code Playgroud)

c# memory arrays jagged-arrays multidimensional-array

7
推荐指数
1
解决办法
3364
查看次数

以最简单的方式实例化一个对象数组?

给出一个类:

class clsPerson { public int x, y; }
Run Code Online (Sandbox Code Playgroud)

有没有办法创建这些类的数组,每个元素初始化为(默认)构造的实例,而不是在for循环中手动执行,如:

clsPerson[] objArr = new clsPerson[1000];

for (int i = 0; i < 1000; ++i)
    objArr[i] = new clsPerson();
Run Code Online (Sandbox Code Playgroud)

我可以缩短N个对象数组的声明和实例化吗?

c# arrays constructor object new-operator

2
推荐指数
2
解决办法
2万
查看次数