c# - 私有(private) setter 不会阻止更改数组元素

标签 c# setter

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

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/

相关文章:

java - 将 trim 方法添加到 Lombok 中的 setter

java - (需要标识符)getter/setter 和对象

java - 您可以在 Java 中声明无参数方法以在 Scala 中使用吗?

c# - SystemSounds.Beep.Play 不发出任何声音

c# - 在 WPF 中同步两个富文本框滚动条

c# - 如何从 MVC Razor 标记获取查询字符串参数?

c# - 具有 getter 和 setter 的值类型仍然是值类型吗?

java - Getter 和 Setter 方法以及读取 txt 文件

c# - 母版页Page_Load方法运行在aspx页面Page_Load方法之后

c# - 第一次调用时分离处理程序