C#:自定义2维阵列故障

C#:自定义2维阵列故障,c#,arrays,class,C#,Arrays,Class,我正在尝试使用以下代码创建自定义类单元格的二维数组: public class Cell { int top; int bottom; } public Form1() { Cell[,] elements; elements = new Cell[10,10]; Random r = new Random(); for (int i=0; i!=10; i++) { for (int j=0; j!=10; j++)

我正在尝试使用以下代码创建自定义类
单元格
的二维数组:

public class Cell
{
    int top;
    int bottom;
}

public Form1()
{
    Cell[,] elements;
    elements = new Cell[10,10];

    Random r = new Random();

    for (int i=0; i!=10; i++)
    {
        for (int j=0; j!=10; j++)
        {
            elements[i,j].top = r.Next();
        } 
    }
}
但我总是收到以下错误: 不一致的可访问性:。。。还有一些关于“细胞不易接近”


如何正确定义自定义类的二维数组?

我怀疑您实际上还没有完全掌握这些代码。我怀疑您在实际代码中的
Cell
声明中遗漏了“public”,并且您有一个public方法在签名的某个地方使用它。大概是这样的:

class Cell { ... }

public class Foo
{
    public Cell[,] DoStuff()
    {
    }
}
或者,您可能将
Cell
作为公共类,但嵌套在非嵌套类中

我不认为这与数组有任何关系

然而,如果你发布完整的错误信息而不是“和某事有关”,那就更清楚了。。。如果你发布一个简短但完整的程序来演示这个问题,也会有所帮助

编辑:正如其他人指出的,您发布的代码不会编译,但原因不同。我怀疑您是否编造了一条关于不一致可访问性的错误消息,因此我强烈怀疑您发布的代码实际上与您的真实代码完全不同——至少在可访问性方面是这样


同样,如果看不到真正的代码,很难给出准确的答案。

我怀疑您实际上还没有完全掌握这些代码。我怀疑您在实际代码中的
Cell
声明中遗漏了“public”,并且您有一个public方法在签名的某个地方使用它。大概是这样的:

class Cell { ... }

public class Foo
{
    public Cell[,] DoStuff()
    {
    }
}
或者,您可能将
Cell
作为公共类,但嵌套在非嵌套类中

我不认为这与数组有任何关系

然而,如果你发布完整的错误信息而不是“和某事有关”,那就更清楚了。。。如果你发布一个简短但完整的程序来演示这个问题,也会有所帮助

编辑:正如其他人指出的,您发布的代码不会编译,但原因不同。我怀疑您是否编造了一条关于不一致可访问性的错误消息,因此我强烈怀疑您发布的代码实际上与您的真实代码完全不同——至少在可访问性方面是这样


同样,如果看不到真实的代码,很难给出准确的答案。

可访问性错误与数组创建无关。该错误最常见的场景是带有私有或内部类型参数的公共方法。

可访问性错误与创建数组无关。该错误最常见的场景是带有私有或内部类型参数的公共方法。

属性的默认可访问性是私有的。试试这个:

public class Cell
{
    public int top;
    public int bottom;
}
更好的是,使它们成为自动属性:

public class Cell
{
    public int top { get; set; }
    public int bottom { get; set; }
}

属性的默认可访问性是private。试试这个:

public class Cell
{
    public int top;
    public int bottom;
}
更好的是,使它们成为自动属性:

public class Cell
{
    public int top { get; set; }
    public int bottom { get; set; }
}

我建议您使用
top
bottom
字段创建属性。它们有一个
private
访问权限,因此出现错误:

public class Cell
{
    public int top { get; set; };
    public int bottom { get; set; };
}

我建议您使用
top
bottom
字段创建属性。它们有一个
private
访问权限,因此出现错误:

public class Cell
{
    public int top { get; set; };
    public int bottom { get; set; };
}

而不是“有关……”,你应该把确切的错误文本。这不是解决你的问题,但你可能要考虑制作<代码>细胞< /代码> A<代码> Stutt:而不是“关于……的东西”。你应该把正确的错误文本放进去。这不是解决你的问题,但你可能想考虑制作<代码>单元格< /COD> >代码> Stutt:他试图访问上面的字段,这是私有的。马希米莲:非常正确。再说一遍,我怀疑我们还没有看到真正的代码。他正试图访问顶部的字段,这是私有的。@Maximilian:非常正确。不过,我怀疑我们还没有看到真正的代码。