【发布时间】:2016-01-14 18:21:56
【问题描述】:
我想创建我的Matrix class 字段:double[][] _elements,
但我不知道如何为get 和set 编写属性[][]。
【问题讨论】:
标签: c# properties operators overloading
我想创建我的Matrix class 字段:double[][] _elements,
但我不知道如何为get 和set 编写属性[][]。
【问题讨论】:
标签: c# properties operators overloading
这是您需要的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; }
}
【讨论】:
_elements 似乎该属性应该是 double[] 类型。
arr是double[][],返回类型应该是double[]而不是double。