今天模仿着做一个IList类,是用Reflector看着System.Web.UI.WebControls.ListItemCollection做的。IList要求实现object this[int index]{get;set;},然而我看到ListItemCollection是通过如下方法实现固定返回类型的:(这是Reflector提供的C#代码)
void IList.set_Item(int index, object value)
{
this.listItems[index] = (ListItem) value;
}
public ListItem this[int index]
{
get
{
return (ListItem) this.listItems[index];
}
}
然而我模仿着这样去做,却无法通过编译,为什么呢?难道.NET Framework使用的编译器比我们的要宽松,甚至它直接写IL的?
void IList.set_Item(int index, object value)
{
this.listItems[index] = (ListItem) value;
}
public ListItem this[int index]
{
get
{
return (ListItem) this.listItems[index];
}
}
然而我模仿着这样去做,却无法通过编译,为什么呢?难道.NET Framework使用的编译器比我们的要宽松,甚至它直接写IL的?
2.返回值重载可以用显示接口实现的技巧实现。
object IList.this[int index]
{
get}public ListItem this[int index]
{
}
{
get
{
return this[index]
}
}public ListItem this[int index]
{
}