对象矩阵,访问字段

时间:2017-02-07 09:59:49

标签: c# matrix multidimensional-array

我有这个班级

class cell
{
    public cell()
    {
        T= -1;
        M= -1;
        s= false;
    }

    public cell(int T, int M)
    {
        this.T= T;
        this.M= M;
        this.s= false;
    }

    int T;
    int M;
    bool s;
}

这个"矩阵":

cell[,] test = new cell[10, 4];

然后我需要访问我的类单元格的字段,我尝试了这个:

for (var i = startR; i < nR; i++)
{
    for (var j = startR; j < nC; j++)
    {
        var p = test[i, j];

    }
}

但如果我尝试p.sp.Tp.M,我就看不到这些属性。为什么?我如何访问这些字段?

2 个答案:

答案 0 :(得分:2)

您的字段为aws configure set region us-east-1private是类内的默认访问修饰符)。制作所有字段private

public

或更好的方式

您可以将字段更改为public int T; public int M; public bool s; 自动属性(因为字段不应为public):

public

或者

如果您需要字段和属性:

public int T { get; set;}
public int M { get; set;}
public bool s { get; set;}

然后阅读或写简单地使用这些属性:

int T;
int M;
bool s;

public int TProperty
{
    get {return T;}
    set {T = value;}
}

public int MProperty
{
    get {return M;}
    set {M = value;}
}

public bool SProperty
{
    get {return s;}
    set {s = value;}
}

答案 1 :(得分:0)

您可以创建公共只读自动属性,例如。如下例所示:

class cell
{
    public cell()
    {
        T = -1;
        M = -1;
        S = false;
    }

    public cell(int t, int m)
    {
        T = t;
        M = m;
        S = false;
    }

    public int T { get; }

    public int M { get; }

    public bool S { get; }
}

从构造函数中设置值(正如您已经完成的那样)并使用readonly属性通常比暴露公共setter更好(除非您有充分理由这样做),作为{{1}的实例class将是不可变的,并且在实例化后不会被更改。