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()”
展开
 我来答
husonghaoyue
2013-08-13 · TA获得超过133个赞
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:71.4万
展开全部
// 摘要:
// 公开枚举数,该枚举数支持在指定类型的集合上进行简单迭代。
//
// 类型参数:
// 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都可以啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郏鸿祯C6
2013-08-13 · TA获得超过4549个赞
知道小有建树答主
回答量:1601
采纳率:50%
帮助的人:1199万
展开全部

一个类如果继承自一个接口,那么这个类一定要实现接口中定义的所有方法。

你的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做么,我不知道数组究竟开多大
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
2013-08-13 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7812万
展开全部
既然接口有T,infoindex也应该有T呀。还有声明的时候不应该显示限定int吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式