struct C#中的数组

时间:2011-12-31 15:56:50

标签: .net visual-studio c#-4.0

我在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;

我在C#中有struct Vector3,它是float x,y,z(我不需要double ...) 现在我正在尝试进行结构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 个答案:

答案 0 :(得分:3)

您可以使用:

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

答案 1 :(得分:1)

在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]};

希望它有所帮助。