在struct中不能有实例字段初始值设定项

时间:2011-12-31 18:51:47

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

我在C#方面不是很有经验,我以前在java工作过。我以前已经问了一些事情,有些人建议我这样做。 链接到我的旧主题here 但是我对这段代码有新的问题。 Visual Studio说“我不能在struct中有实例归档初始化器” - 所以有一些问题,但我真的不明白这个东西,所以在某种程度上可以使这个工作? 我只需要锚点类型Vector3,它是矩阵或数组数组 - 无论4x4 在java中我可能会写它 public Vector3 [] [] = new Vector3 [4] [4];

这是我有问题的代码:

  [StructLayout(LayoutKind.Sequential)]
    struct BPatch
    {
        public Vector3[][] anchors = new Vector3[][] {new Vector3[4],new Vector3[4],new Vector3[4],new Vector3[4]};
        public uint dlBPatch;// Display list
        public uint texture;// Texture
    }

1 个答案:

答案 0 :(得分:1)

当你有5个阵列时,你可能只是让它成为一个类。它表现得更明智:

class BPatch
{
    private readonly Vector3[][] anchors = new Vector3[][] {new Vector3[4],new Vector3[4],new Vector3[4],new Vector3[4]};
    public Vector3[][] Anchors { get { return anchors; } }
    public uint DlBPatch {get;set;}
    public uint Texture {get;set;}
}

如果你有很好的理由进行微优化,那么“固定”数组(而不是锯齿状数组)可能会很有趣。