C#:自定义2-dim数组有问题

时间:2009-11-24 16:05:10

标签: c# arrays class

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

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不易访问”......

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

4 个答案:

答案 0 :(得分:4)

我怀疑你实际上并没有得到那么多代码。我怀疑你在你的真实代码中已经离开了“公共”的Cell声明,而且你有一个公共方法在签名中的某个地方使用它。像这样:

class Cell { ... }

public class Foo
{
    public Cell[,] DoStuff()
    {
    }
}

或者,您可能已将Cell作为公共类但嵌套在非嵌套类中。

我认为这与阵列无关。

然而,如果您发布完整的错误消息而不是“和某些事情”,那将会更加清晰......如果您发布一个简短但完整的程序来证明问题,这也会有所帮助。

编辑:正如其他人所指出的那样,你发布的代码不能编译,而是因为不同的原因。我怀疑你是否提出了关于不一致可访问性的错误消息,所以我强烈怀疑你发布的代码实际上并不像真正的代码 - 至少在可访问性方面。

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

答案 1 :(得分:2)

属性的默认辅助功能是私有的。试试这个:

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

更好的是,让它们成为自动属性:

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我建议您从topbottom字段中创建属性。它们具有private访问权限,因此出现错误:

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