C#使私有实例变量可访问(锯齿状数组)

Chr*_*ris 0 c#

为了在程序中添加更多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)

这只会让调用者访问实际元素,隐藏它由数组支持的事实.

直接暴露一个数组通常是一个坏主意 - 事实上,领导者认为数组有点害.