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