我理解索引器使我们能够访问类中的集合,就像类本身是一个数组一样.
假设我们正在开发一个项目,我们在哪里适合这些索引器的真实实际用法(例如可能有帮助)?
如何知道对象是否实现索引器?我需要共享DataRow和IDataReader的逻辑,但它们不共享任何接口.
我也尝试使用泛型,但不知道我应该对where子句施加什么限制.
public class Indexer {
// myObject should be a DataRow or a IDataReader
private object myObject;
public object MyObject {
get { return myObject; }
set { myObject = value; }
}
// won't compile, myObject has no indexer
public object this[int index] {
get { return myObject[index]; }
set { myObject[index] = value; }
}
public Indexer(object myObject) {
this.myObject = myObject;
}
}
public class Caller {
void Call() {
DataRow row = null;
IDataReader reader …Run Code Online (Sandbox Code Playgroud) public string name;
public int rollNo;
public string this[int i]
{
get
{
switch(i)
{
case 0:
return name;
case 1:
return rollNo.ToString();
default:
return "";
}
}
set
{
switch (i)
{
case 0:
name = value;
break;
case 1:
rollNo = value;
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面是我正在尝试执行的代码,但问题是rollNo = value显示此问题"无法从字符串转换为int".我想问的是,传递给索引器的值是否需要与索引器的返回类型相同?如果没有,请指导我到底做错了什么.-谢谢
这里到底发生了什么:
public decimal[] Coefficients;
public decimal this[int i]
{
get { return Coefficients[i]; }
set { Coefficients[i] = value; }
}
Run Code Online (Sandbox Code Playgroud)
这是什么this服务?它是某种延伸decimal吗?