如果我在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]);
答案 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