为了在程序中添加更多oop,我希望在一个可访问类的类(对象)中创建一个私有实例变量.
private byte [] [] J;
所有这些代码都引用了这个锯齿状数组.
现在在另一个类中,我将所有for循环与控制台写入一起放置以显示想要的结果.基本上它说"当前上下文中不存在名称J"
但是我如何使这个J可以访问?
我尝试过get和set但是我一直在'无法转换为byte to byte [] []'
获取和设置我需要什么样的cyntax?
像这样的东西?或者我还需要几个步骤?:
public Byte JArray
get { return J; } //can converrt to byte here
set { J = value; } //cannnot convert to byte here
Run Code Online (Sandbox Code Playgroud)
亲切的问候
Jon*_*eet 12
如果要通过属性公开变量,则属性的类型必须与变量的类型(或兼容)相同:
public byte[][] JArray
{
get { return J; }
set { J = value; }
}
Run Code Online (Sandbox Code Playgroud)
但是,您可能并不真正需要setter - 除非您确实希望调用者能够更改J以引用不同的锯齿状数组.只是吸气,他们仍然可以更改值中的数组,但他们不能改变变量的值.
尽管如此,调用者仍然可以更改"外部"数组的内容,一次更改整个"列":
foo.JArray[10] = new byte[10];
Run Code Online (Sandbox Code Playgroud)
另一种方法是在您的类中添加一个索引器:
public byte this[int x, int y]
{
get { return J[x][y]; }
set { J[x][y] = value; }
}
Run Code Online (Sandbox Code Playgroud)
这只会让调用者访问实际元素,隐藏它由数组支持的事实.
直接暴露一个数组通常是一个坏主意 - 事实上,领导者认为数组有点害.