为什么即使没有实现setter也可以设置二维数组

c#

为什么即使没有实现 setter 也可以设置二维数组?

这是我的代码。

public static void Main()
{
    var obj = new TestObj();
    obj.qwe[0, 0] = 6;
    obj.asd = 7; //error
    Console.WriteLine(obj.qwe[0, 0]); //6
}

public class TestObj
{
    public int[,] qwe { get; } = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
    public int asd { get; } = 4;
}

回答

为什么即使没有实现 setter 也可以设置二维数组?

因为您没有设置属性,所以您正在更新数组中的一个项目。

例如,这不会编译:

obj.qwe = new int[0, 0];

在您的代码中,您正在调用get以获取对数组的引用,并更新索引 0, 0 处的项目:

obj.qwe[0, 0] = 6;


以上是为什么即使没有实现setter也可以设置二维数组的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>