C#允许您覆盖this
属性的数组索引器,如下所示:
int this[int index]
{
get { return _hidden[index]; }
set { _hidden[index] = value; }
}
int[] _hidden;
但是,我想通过索引访问不同名称的属性,如下所示:
int Hidden[int index]
{
get { return _hidden[index]; }
set { _hidden[index] = value; }
}
int[] _hidden;
我知道我可以通过将它用作常规参数来解决这个问题:
int Hidden(int index)
{
return _hidden[index];
}
void Hidden(int index, int value)
{
_hidden[index] = value;
}
int[] _hidden;
然而,我失去了命名属性的便利性,而且我基本上回到了公开命名的get / set方法。另外,由于我在幕后访问数组的成员,因此对于我的情况,数组索引符号在概念上更有意义。
有没有办法将运算符的便利性与数组索引器相结合?
答案 0 :(得分:2)
属性不能像可索引项一样,除非它返回一个。您有两种选择:
第一个很简单,但它允许更改数组/列表/任何内容。第二个只能有一个吸气剂,所以它可以只读。
我很确定使用索引器和getter创建一个通用模板并不是很多行代码来封装存储值的实际对象(如果需要的话)。