C#class

时间:2018-03-22 22:27:56

标签: c# class

如果我在C#示例中创建一个类,那么Custom Matrix4类可以以允许我访问它的方式编写类,而无需显式访问成员变量。

简单Matrix4类的示例:

class Matrix4
{
    private double[,] _m = new double[4, 4] { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } };
    public double[,] m
    {
        get { return (_m); }
        set { _m = value; }
    }
}

并访问实际的2D数组,也就是矩阵,我必须写 m4.m [1,1] 是否可以将它放在你不必编写 .m 所以它只是 m4 [1,1] ,它不是超级输入但是它很好并且它可能在C ++中因此认为它可能在C#中也是如此但是一直没能找到任何关于它的东西。

目前如何访问它:

Matrix4 m4 = new Matrix4();
Debug.Log(m4.m[1, 1]);

我希望如何:

Matrix4 m4 = new Matrix4();
Debug.Log(m4[1, 1]);

2 个答案:

答案 0 :(得分:1)

显然它在C#中被称为索引器,感谢@ itsme86评论指出这一点。

以下是使用矩阵示例的方法:

[1] 2 2 1 1 1 0

并访问它:

 class Matrix4
    {
        private double[,] _m = new double[4, 4] { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } };
        public double this[int x, int y]
        {
            get { return (_m[x, y]); }
            set { _m[x, y] = value; }
        }
    }

答案 1 :(得分:0)

使用索引器(https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/indexers/

class Matrix4
{
    private double[,] _m = new double[4, 4] { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } };
    public double this[int i,int j]
    {
        get { return (_m[i,j]); }
        set { _m[i,j] = value; }
    }
}
var m4 = new Matrix4();
// m4[1,1] == 1