在我的代码中,在主窗口类中,我有一个数组:
public TextBox[,] Letterbox { get; private set; } = new TextBox[4, 4];
在其他课上,我尝试做
my_main_window.Letterbox[1, 1] = null;
而且效果很好。我希望该数组可供其他类读取,但不能写入。我应该怎么做?
最佳答案
答:Letterbox作为一个属性,是一个数组属性。该代码正确地阻止您为数组设置新值....。
但是,任何有权访问该数组的人都可以对该数组做任何他们想做的事情。
要完成您打算做的事情,您需要一个 indexer .
public class LetterBox
{
private TextBox[,] array = new TextBox[4, 4];
public TextBox this[int x, int y]
{
get
{
return array[x, y];
}
}
}
(您仍然需要某种方式来设置它,但这就是您构建所需结构的方式。)
关于c# - 私有(private) setter 不会阻止更改数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45392100/