C# - 如何重载 [][](两个方形制动器)
本文关键字:两个 方形 制动器 何重载 重载 | 更新日期: 2023-09-27 18:30:36
我想用字段创建我的Matrix class
: double[][] _elements
,但我不知道如何为get
和set
编写属性[][]
.
这是您需要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; }
}