C#-如何过载[](两个方形制动器)

C#-如何过载[](两个方形制动器),c#,properties,operators,overloading,C#,Properties,Operators,Overloading,我想用字段创建我的矩阵类:double[][]u元素, 但是我不知道如何为get和set编写属性[]]: 为什么不创建一个带有两个参数的索引器呢 public double this[int i, int j] { get { return _elements[i][j]; } set { _elements[i][j] = value; } } 用法: var myValue = myInstance[1, 4]

我想用字段创建我的
矩阵类
double[][]u元素
, 但是我不知道如何为
get
set
编写属性
[]]


为什么不创建一个带有两个参数的索引器呢

public double this[int i, int j]
{
    get
    {
        return _elements[i][j];
    }
    set
    {
        _elements[i][j] = value;
    }
}
用法:

var myValue = myInstance[1, 4];

这是您需要的
索引器

public double this[int x, int y]
{
    get { return _elements[x][y]; }
    set { _elements[x][y] = value; }
}

要获得一个看起来像这样的索引属性,您需要执行以下操作

public class YourClass
{
    private double[][] _elements;

    public double[] this[int index]
    {
        get
        {
            return _elements[index];
        }
        set
        {
            _elements[index] = value;
        }
    }
}
这将允许类似于

var instance = new YourClass();
var d = instance[0][1];
instance[0][1] = 2.5;

尽管在这一点上,您需要对索引范围进行更改,并且可能应该在另一个属性中公开
\u element.Length

基于OP的
\u elements
属性似乎应该是
double[]
类型。假设
arr
double[]
返回类型应为
double[]
而不是
double
var instance = new YourClass();
var d = instance[0][1];
instance[0][1] = 2.5;