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

C# 私有setter不阻止更改数组元素,c#,setter,C#,Setter,在我的代码中,在主窗口类中,我有一个数组: public TextBox[,] Letterbox { get; private set; } = new TextBox[4, 4]; 在另一节课上,我试着 my_main_window.Letterbox[1, 1] = null; 而且效果很好。我希望数组能够被其他类读取,而不是写入。我应该怎么做?回答:信箱作为一个属性,是一个数组属性。代码正确地阻止您设置新值。。。。对于数组 但是,任何可以访问该数组的用户都可以对该数组执行任何操作 要

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

public TextBox[,] Letterbox { get; private set; } = new TextBox[4, 4];
在另一节课上,我试着

my_main_window.Letterbox[1, 1] = null;

而且效果很好。我希望数组能够被其他类读取,而不是写入。我应该怎么做?

回答:信箱作为一个属性,是一个数组属性。代码正确地阻止您设置新值。。。。对于数组

但是,任何可以访问该数组的用户都可以对该数组执行任何操作

要做你打算做的事情,你需要一个


(您仍然需要某种方式来设置它,但这就是您创建所需构造的方式。)

在您的情况下,
private set
意味着您不能将
TextBox[,]
的另一个实例设置为
lettbox
属性,但可以设置他的元素。因此,我建议您使用some
ReadOnlyCollection
public class LetterBox
{
    private TextBox[,] array = new TextBox[4, 4];
    public TextBox this[int x, int y]
    {
        get
        {
            return array[x, y];
        }
    }
}