私有setter不会阻止更改数组元素

时间:2017-07-29 17:30:11

标签: c# setter

在我的代码中,在主窗口类中,我有一个数组:

public TextBox[,] Letterbox { get; private set; } = new TextBox[4, 4];

在其他课程中,我尝试做

my_main_window.Letterbox[1, 1] = null;

它工作得很好。我希望数组可以读取,但不能写入其他类。我该怎么办?

1 个答案:

答案 0 :(得分:3)

答案:Letterbox作为属性,是一个数组属性。该代码正确地阻止您为数组设置新值....

但是,任何可以访问该数组的东西都可以随心所欲地使用该数组。

要执行您打算执行的操作,您需要indexer

public class LetterBox
{
    private TextBox[,] array = new TextBox[4, 4];
    public TextBox this[int x, int y]
    {
        get
        {
            return array[x, y];
        }
    }
}

(你仍然需要某种方式来设置它,但这就是你如何制作你正在寻找的构造。)