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

Cla*_*ude -1 c# getter-setter

为什么即使没有实现 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;
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*lay 6

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

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

例如,这不会编译:

obj.qwe = new int[0, 0];
Run Code Online (Sandbox Code Playgroud)

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

obj.qwe[0, 0] = 6;
Run Code Online (Sandbox Code Playgroud)