C# - 如何重载 [][](两个方括号)
C# - How to overload [][] (two square brakets)
我想创建我的 Matrix class
字段:double[][] _elements
,
但我不知道如何为 get
和 set
.
写 属性 [][]
从这里开始:https://msdn.microsoft.com/en-us/library/6x16t2tx.aspx
public double[] this[int i]
{
get { return arr [i]; }
set { arr [i] = value; }
}
你为什么不创建一个有两个参数的索引器?
public double this[int i, int j]
{
get
{
return _elements[i][j];
}
set
{
_elements[i][j] = value;
}
}
用法:
var myValue = myInstance[1, 4];
这是您需要的 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
我想创建我的 Matrix class
字段:double[][] _elements
,
但我不知道如何为 get
和 set
.
[][]
从这里开始:https://msdn.microsoft.com/en-us/library/6x16t2tx.aspx
public double[] this[int i]
{
get { return arr [i]; }
set { arr [i] = value; }
}
你为什么不创建一个有两个参数的索引器?
public double this[int i, int j]
{
get
{
return _elements[i][j];
}
set
{
_elements[i][j] = value;
}
}
用法:
var myValue = myInstance[1, 4];
这是您需要的 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