C# 如何使用此[][]进行arrayclass访问
我想为一些计算创建一个矩阵类。在我的研究中,我在一些关于性能的讨论中跌跌撞撞地发现了C# 如何使用此[][]进行arrayclass访问,c#,arrays,class,matrix,this,C#,Arrays,Class,Matrix,This,我想为一些计算创建一个矩阵类。在我的研究中,我在一些关于性能的讨论中跌跌撞撞地发现了Array[,]vsArray[][],他们的结论是,如果你想快速使用Array[][] 当我试图通过[][]提供对值的访问时,我似乎错过了一些重要的内容,因为我无法创建这样的属性 public double this[int iRow][int iCol] { get { return matrix[iRow][iCol]; } set { matrix[i
Array[,]
vsArray[][]
,他们的结论是,如果你想快速使用Array[][]
当我试图通过[][]
提供对值的访问时,我似乎错过了一些重要的内容,因为我无法创建这样的属性
public double this[int iRow][int iCol]
{
get { return matrix[iRow][iCol]; }
set { matrix[iRow][iCol] = value; }
}
我的问题是第二个[],因为下面的方法很有效
public double this[int iRow,int iCol]
{
get { return matrix[iRow][iCol]; }
set { matrix[iRow][iCol] = value; }
}
那么我需要在这个类中添加什么才能让它与[][]一起工作呢?
public class Matrix
{
private bool _isSquare;
private double[][] matrix;
public double this[int iRow,int iCol]
{
get { return matrix[iRow][iCol]; }
set { matrix[iRow][iCol] = value; }
}
}
你不能在一节课上做这件事
var b = a[1][2];
与
var temp = a[1];
var b = temp[2];
它们是两个独立的索引操作
您的第一个索引器需要返回某个类的实例,该类也有索引器
public class M
{
public double[][] Matrix { get; private set; }
public M()
{
Matrix = new double[2][]{new double[2], new double[2]};
}
}
M n = new M();
n.Matrix[0][0] = 1.0;
为什么不让你的矩阵
get;私人设置代码>?@Sayse这如何解决我的问题?目前,可访问性不重要。我已经添加了解释mhh的答案,因此如果我想通过myMatrix[row][col]
访问值,我将永远无法获取所选的col
,对吗?因为我只能返回一个double[]
,它将得到col
您是正确的。使用如下图所示的2D索引器有什么问题?(this[int-iRow,int-iCol]
)如果我使用intern[]]
,但通过[,]
提供访问,有些人可能会认为使用intern的速度较慢[,]
,所以我想我会很好地反映我intern使用的数组类型。非常重要的一点是要非常清楚,不要对术语懒惰(这完全是另外一回事。)但是,不,你所说的与抽象数据类型的整体观点背道而驰。内部结构就是:内部结构。它们对类的使用者是隐藏的,只要外部接口保持不变,您就可以随意实现和修改内部构件。我个人认为[x,y]
更有意义。那为什么还要使用类呢?这只是一个double数组的数组。整个数组都可以修改,你只是不能分配一个新的数组。在我看来,他想要一种将值写入矩阵的简便方法,而不是阻止这个类扩展到数学