我在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。 感谢
答案 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]};
希望它有所帮助。