C# - 如何超载[] [](两个方形的支架)

时间:2016-01-14 18:21:57

标签: c# properties operators overloading

我想用字段Matrix class创建我的double[][] _elements, 但我不知道如何为[][]get编写属性set

4 个答案:

答案 0 :(得分:1)

以下是您需要的Indexer

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

用法:

var myValue = myInstance[1, 4];

答案 3 :(得分:0)

获取看起来像你需要做的索引属性

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

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

这会允许像

这样的东西
var instance = new YourClass();
var d = instance[0][1];
instance[0][1] = 2.5;

虽然此时您需要谨慎对待您的索引范围,并且应该在另一个属性中公开{​​{1}}。