类中的C#公共变量

类中的C#公共变量,c#,C#,我有一个类,在它的构造函数中声明了一个2D锯齿数组,在这个类中我有两个方法,叫做GetXY和SetXY,它们修改了这个数组 但是,我不确定是否应该使用这些方法,或者实际上应该将网格声明为公共网格,这意味着有两种方法可以设置和读取数组中的值,如下所示: ProceduralGrid pg = new ProceduralGrid(10, 10); pg.grid[0][0] = 2; pg.SetXY(0, 0, 2); 我应该使用哪一种,为什么?为什么不使用

我有一个类,在它的构造函数中声明了一个2D锯齿数组,在这个类中我有两个方法,叫做GetXY和SetXY,它们修改了这个数组

但是,我不确定是否应该使用这些方法,或者实际上应该将网格声明为公共网格,这意味着有两种方法可以设置和读取数组中的值,如下所示:

    ProceduralGrid pg = new ProceduralGrid(10, 10);

    pg.grid[0][0] = 2;
    pg.SetXY(0, 0, 2);
我应该使用哪一种,为什么?为什么不使用

    public T this[int x, int y]
    {
        get
        {
            return grid[x][y];
        }
        set
        {
            grid[x][y] = value;
        }
    }
自然检查x和y等是否有效。

为什么不使用

    public T this[int x, int y]
    {
        get
        {
            return grid[x][y];
        }
        set
        {
            grid[x][y] = value;
        }
    }

自然地检查有效的x和y等。

最好使用方法来设置通常使用的变量

通过这种方式,您可以保护内部对象,并且可以根据需要自由实施额外的验证或修改对象


这使您以后可以轻松地更改该对象的行为。

最好使用方法来设置通常使用的变量

通过这种方式,您可以保护内部对象,并且可以根据需要自由实施额外的验证或修改对象


这允许您稍后轻松更改该对象的行为。

使用方法访问阵列。
SetXY
或Alessandro建议的索引器。这样,您以后就可以在不更改类接口的情况下更改实现。

使用方法访问数组。
SetXY
或Alessandro建议的索引器。通过这种方式,您以后可以在不更改类接口的情况下更改实现。

索引属性是两个世界中最好的-使用类似数组的语法进行访问,但包装在用于封装的getter/setter中Index属性是两个世界中最好的-使用类似数组的语法进行访问,但包装在用于封装的getter/setter中