массив в структуре C # - PullRequest
       3

массив в структуре C #

2 голосов
/ 31 декабря 2011

У меня проблема с массивом в C #. Я совсем новичок в C # Я привык делать программы на Java. Я пытаюсь перенести этот код из C ++ в C #. Это код на C ++

typedef struct point_3d {           // Structure for a 3-dimensional point (NEW)
    double x, y, z;
} POINT_3D;

typedef struct bpatch {             // Structure for a 3rd degree bezier patch (NEW)
    POINT_3D    anchors[4][4];          // 4x4 grid of anchor points
    GLuint      dlBPatch;               // Display List for Bezier Patch
    GLuint      texture;                // Texture for the patch
} BEZIER_PATCH;

У меня есть структура Vector3 в C #, которая является плавающей точкой x, y, z (мне не нужно дублировать ...) Сейчас я пытаюсь сделать структуру bpatch и у меня проблемы с объявлением массива

[StructLayout(LayoutKind.Sequential)]
struct BPatch
{
  Vector3[][] anchors = new Vector3[4][4]; //there is the problem
  uint dblPatch; // I'll probably have to change this two lines but it doesn't matter now
  uint texture; 

}

что я делаю не так ?? Мне нужен aray 4x4 в структуре, его тип должен быть структурой Vector3, которая объявлена ​​как float x, float y, float z. Спасибо

Ответы [ 2 ]

3 голосов
/ 31 декабря 2011

Вы можете использовать:

Vector3[,] anchors = new Vector3[4,4];
1 голос
/ 31 декабря 2011

В C # Vector3 [] [] - это не матрица, а массив массивов. Итак, вам нужно будет сделать это:

anchors = new Vector3[4][];
for(var i=0;i<anchors.Length;i++)
    anchors[i] = new Vector3[4];

Вот некоторая документация от MSDN http://msdn.microsoft.com/en-us/library/2s05feca.aspx

Другой способ, встроенный:

Vector3[][] anchors = new Vector3[][]{new Vector3[4],new Vector3[4],new Vector3[4],new Vector3[4]};

Надеюсь, это поможет.

...