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

本文关键字:两个 方形 制动器 何重载 重载 | 更新日期: 2023-09-27 18:30:36

我想用字段创建我的Matrix classdouble[][] _elements ,但我不知道如何为getset编写属性[][].

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

这是您需要Indexer

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;

尽管此时您需要注意索引范围,并且可能应该在另一个属性中公开_element.Length

为什么不创建具有两个参数的索引器?

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

用法:

var myValue = myInstance[1, 4];

从这里开始:https://msdn.microsoft.com/en-us/library/6x16t2tx.aspx

public double[] this[int i]
{
    get { return arr [i]; }
    set { arr [i] = value; }
}