c# 枚举接口

问题:这个两个方法都是实现迭代器的,只想结果一样。这两个类(Class1)有什么区别吗?在Class1后加IEnumerable和不加的原理是什么?谢谢。执行的时候,两个... 问题:这个两个方法都是实现迭代器的,只想结果一样。这两个类(Class1)有什么区别吗?在Class1后加IEnumerable和不加的原理是什么?谢谢。
执行的时候,两个类都能使用Foreach遍历。执行结果也完全一样。
为什么我在类Class1后不实现IEnumerable接口,只是把IEnumerable接口中的GetEnumerator方法写了一下。编译器就自动实现和实现IEnumerable接口一样的效果?谢谢。
展开
 我来答
zechac
2013-10-24 · TA获得超过161个赞
知道答主
回答量:84
采纳率:0%
帮助的人:55.8万
展开全部
又见楼主,好执着啊,跟我一样 哈哈
我再解释一下吧,他们两个的区别就是一个实现了IEnumerable接口一个没有实现,但是都有一个叫GetEnumerator的方法。foreach不管你有没有实现IEnumerable接口,他指认有没有一个叫GetEnumerator的方法并是否返回了IEnumerator。在编译阶段进行检查,如果没有这个方法你的程序是不会编译通过的。编译后的程序是直接调用GetEnumerator这个方法得到IEnumerator进行调用,大概就是这样,具体实现就要去问微软了。
qinnan851
2013-10-24 · TA获得超过104个赞
知道小有建树答主
回答量:239
采纳率:0%
帮助的人:182万
展开全部
IEnumerable在你Foreach的时候会自动调用GetEnumerator方法。如果你不实现IEnumerable接口你就没法用Foreach遍历了
追问
执行的时候,两个类都能使用Foreach遍历。执行结果也完全一样。
为什么我在类Class1后不实现IEnumerable接口,只是把IEnumerable接口中的GetEnumerator方法写了一下。编译器就自动实现和实现IEnumerable接口一样的效果?谢谢。
追答
foreach使用的类也不一定必须继承IEnumerable接口,但必须具有GetEnumerator()的方法实现,该方法实现返回值又必须为具有Current的属性和实现MoveNext()的方法的类的实例,你确定你代码跑的起来。我眼看都跑不起来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式