我正在尝试使用以下代码创建自定义类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不易访问”......
如何正确定义自定义类的二维数组?
答案 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)
我建议您从top
和bottom
字段中创建属性。它们具有private
访问权限,因此出现错误:
public class Cell
{
public int top { get; set; };
public int bottom { get; set; };
}