0

我想为一些计算创建一个 Matrix 类。在我的研究中,我偶然发现了一些性能讨论,如果你想要快速的Array[,]Array[][],他们的结论总是有用的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; }
    }
}
4

2 回答 2

1

你不能在一堂课上做到这一点。

var b = a[1][2];

是相同的

var temp = a[1];
var b = temp[2];

它们是两个独立的索引操作。

您的第一个索引器需要返回某个类的实例,该类也具有索引器。

于 2013-07-16T06:53:59.053 回答
1

不确定您要做什么,但如果您的矩阵如下,您仍然可以做您正在寻找的事情

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;
于 2013-07-16T07:05:58.730 回答