2 回答
TA贡献1801条经验 获得超8个赞
使用相同的签名这是不可能的。编译器如何知道您调用了哪个索引器方法?您可能想要使用第二个参数(例如节点级别的索引),然后编译器可以区分这两个调用。对于属性 1,您可以使用此代码。
private Point3d this[int nodeLevel, int index] {
get {
return this.m_Levels[this.m_NodeLevel[nodeLevel]][index];
}
set {
this.m_Levels[this.m_NodeLevel[nodeLevel]][index] = value;
}
}
除了索引器,您始终可以使用带有名称的函数(例如int GetValueAtLevel(int index))。
TA贡献1786条经验 获得超11个赞
正如@slfan 所说,您不能为您的this财产提供两个相同的签名。
为了您的理解,您可以将其转换为
public int this[int index]
{
get
{
return this.m_array[index];
}
set
{
this.m_array[index] = value;
}
}
有了这个翻译:
public int get_Item(int index)
{
return this.m_array[index];
}
public void set_Item(int index, int value)
{
this.m_array[index] = value;
}
让它变小:
int this[int index] { get { ... } }
等价于(等于?)
int get_Item(int index) { ... }
以同样的方式,你可以做到这一点:
int get_Item(int index) { ... }
int get_Item(byte index) { ... }
int get_Item(float index) { ... }
int get_Item(string index) { ... }
你可以也使这样的:
int this[int index] { get { ... } }
int this[byte index] { get { ... } }
int this[float index] { get { ... } }
int this[string index] { get { ... } }
但以同样的方式,你不能做到这一点:
public int get_Item(int index) { ... }
public int get_Item(int index) { ... } // <-- error
也不:
public int get_Item(int index) { ... }
public float get_Item(int index) { ... } // <-- error
你不能这样做:
int this[int index] { get { ... } }
int this[int index] { get { ... } } // <-- error
也不:
int this[int index] { get { ... } }
float this[int index] { get { ... } } // <-- error
- 2 回答
- 0 关注
- 178 浏览
添加回答
举报