c# – 为什么我必须定义IEnumerator.Current和IEnumerator.Curre
发布时间:2020-12-15 08:17:43 所属栏目:百科 来源:网络整理
导读:实现IEnumerable我在训练期间写的一个类的IEnumerator,我注意到我需要为属性“Current”指定两个实现. public class PeopleEnumerator : IEnumeratorPerson{ People people; // my collection I'm enumerating (just a wrapped array). int index; // my ind
实现IEnumerable&我在训练期间写的一个类的IEnumerator,我注意到我需要为属性“Current”指定两个实现.
public class PeopleEnumerator : IEnumerator<Person> { People people; // my collection I'm enumerating (just a wrapped array). int index; // my index to keep track of where in the collection I am. ... //implementation for Person public Person Current { get { return people[index]; } } //implementation for object object Enumerator.Current { get { return people[index]; } } } 我粗略地了解到我正在为它实现一些非泛型版本的IEnumerator和一个“当前”属性,但我不明白以下内容: >为什么我允许在这里通过返回类型重载?据推测它与显式的IEnumerator.Current有关;但是原因对我来说是不透明的. 提前致谢! 解决方法
您必须实现两个不同的接口只有一个原因:向后兼容性. C#1.0没有泛型.
在C#2.0中,我们得到了IEnumerator< T>它扩展了1.0 IEnumerator.
您不能仅通过返回类型重载方法或属性;这就是为什么其中一个必须是一个明确的实现.
同样的道理.它必须是一个明确的实现.显式实现不能将可见性修饰符作为规则.它不可能有任何其他可见性. IEnumerator.Current只能通过IEnumerator接口的实例调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |