C#/.net集合索引怎么写
我是在写.net的后台,因为数组上限不确定,我想写一个类的集合索引。publicclassinfolocation{..}//目标类publicclassinfoinde...
我是在写.net的后台,因为数组上限不确定,我想写一个类的集合索引。
public class infolocation
{ ..
}//目标类
public class infoindex : IEnumerable<int>//在此行报错
{
public IList<infolocation> List { get; set; }
public infolocation this[int infoindex]
{
get
{
return this.List[infoindex];
}
set
{
this.List[infoindex] = value;
}
}
}//索引
//下面是调用
void main()
{
infoindex info1 = new infoindex();
info1[0].DataId =0;
}
编译上没有问题,运行网页时
: CS0535: “infoindex”不实现接口成员“System.Collections.Generic.IEnumerable<int>.GetEnumerator()” 展开
public class infolocation
{ ..
}//目标类
public class infoindex : IEnumerable<int>//在此行报错
{
public IList<infolocation> List { get; set; }
public infolocation this[int infoindex]
{
get
{
return this.List[infoindex];
}
set
{
this.List[infoindex] = value;
}
}
}//索引
//下面是调用
void main()
{
infoindex info1 = new infoindex();
info1[0].DataId =0;
}
编译上没有问题,运行网页时
: CS0535: “infoindex”不实现接口成员“System.Collections.Generic.IEnumerable<int>.GetEnumerator()” 展开
3个回答
展开全部
// 摘要:
// 公开枚举数,该枚举数支持在指定类型的集合上进行简单迭代。
//
// 类型参数:
// T:
// 要枚举的对象的类型。
[TypeDependency("System.SZArrayHelper")]
public interface IEnumerable<T> : IEnumerable
{
// 摘要:
// 返回一个循环访问集合的枚举数。
//
// 返回结果:
// 可用于循环访问集合的 System.Collections.Generic.IEnumerator<T>。
IEnumerator<T> GetEnumerator();
}
---------------------------------------------------------------------------------------------------------------------------------
上面是该接口的实现 , 你还缺少这个接口的方法,你需要在infoindex
类里面实现这个接口里面的 GetEnumerator();方法。
-------------------------------------------------------------------------------------------------------------------------------
public class infoindex : IEnumerable<int>//在此行报错
{
public IList<infolocation> List { get; set; }
public infolocation this[int infoindex]
{
get
{
return this.List[infoindex];
}
set
{
this.List[infoindex] = value;
}
}
#region IEnumerable<int> 成员
public IEnumerator<int> GetEnumerator()
{
throw new NotImplementedException();
}
#endregion
#region IEnumerable 成员
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
#endregion
}//索引
加入进去实现它 就可以了
// 公开枚举数,该枚举数支持在指定类型的集合上进行简单迭代。
//
// 类型参数:
// T:
// 要枚举的对象的类型。
[TypeDependency("System.SZArrayHelper")]
public interface IEnumerable<T> : IEnumerable
{
// 摘要:
// 返回一个循环访问集合的枚举数。
//
// 返回结果:
// 可用于循环访问集合的 System.Collections.Generic.IEnumerator<T>。
IEnumerator<T> GetEnumerator();
}
---------------------------------------------------------------------------------------------------------------------------------
上面是该接口的实现 , 你还缺少这个接口的方法,你需要在infoindex
类里面实现这个接口里面的 GetEnumerator();方法。
-------------------------------------------------------------------------------------------------------------------------------
public class infoindex : IEnumerable<int>//在此行报错
{
public IList<infolocation> List { get; set; }
public infolocation this[int infoindex]
{
get
{
return this.List[infoindex];
}
set
{
this.List[infoindex] = value;
}
}
#region IEnumerable<int> 成员
public IEnumerator<int> GetEnumerator()
{
throw new NotImplementedException();
}
#endregion
#region IEnumerable 成员
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
#endregion
}//索引
加入进去实现它 就可以了
追问
还是报一样的错误,我能改用list做么,我不知道数组究竟开多大
追答
其实你用Array都可以啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个类如果继承自一个接口,那么这个类一定要实现接口中定义的所有方法。
你的infoindex 类继承自:IEnumerable<int>(此处有误,因为你其实要操作的类型是IList<infolocation>,所以你此处继承的接口应该为:IEnumerable<infolocation>),那么你就要实现该接口中的所有方法。
public class infoindex : IEnumerable<infolocation>
{
public IList<infolocation> List { get; set; }
public infolocation this[int infoindex]
{
get
{
return this.List[infoindex];
}
set
{
this.List[infoindex] = value;
}
}
public IEnumerator<infolocation> GetEnumerator()
{
return this.List.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return this.List.GetEnumerator();
}
}
友情提醒:
C#中类、方法、属性的定义应该采用大写开头的命名规则,建议将infolocation,infoindex 等更改为InfoLocation,InfoIndex
追问
还是报一样的错误,我能改用list做么,我不知道数组究竟开多大
还是报一样的错误,我能改用list做么,我不知道数组究竟开多大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然接口有T,infoindex也应该有T呀。还有声明的时候不应该显示限定int吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询