IEnumerable< T >和IEnumerable区别 |枚举接口

为什么我们在继承IEnumerable< T >接口的时候也要实现IEnumerable接口。

新的代码里面都用IEnumerable< T >,因为泛型的类型是安全的。我们可以以类型安全的方式进行迭代,并在周围传播该信息。如果我将IEnumerable返回给您,则您可以放心地假定从它返回的所有内容都是字符串引用或null。使用IEnumerable,我们必须有效地强制转换(通常隐式地在foreach语句中)从序列返回的每个元素,因为IEnumerator的Current属性只是object类型。至于为什么我们仍然需要IEnumerable的原因-从根本上讲,旧接口永远不会消失。现有太多代码在使用它。IEnumerator< T >的 属性 Current是T类型。所以使用泛型

枚举接口是类型安全的不需要特别处理。

在使用IEnumerable< T >接口时,接口函数是隐式接口实现,IEnumerable 是以显示接口实现避免的两个接口的冲突

 

 

  public class ClassX:IEnumerable<Person>
    {
        public ClassX()
        {

        }
        public ClassX(string className)
        {
            this.ClassName = className;
        }
        public string ClassName { get; set; }
        public List<Person> AllPersons= new List<Person>();
   
        public IEnumerator<Person> GetEnumerator()
        {
            //显示接口实现前面不能有任何访问修饰符,且只能通过接口引用,不能通过实例引用。//显示接口成员的访问级别暗中是public,
            //不允许程序员再加任何修饰符。现在大部分的系统为了保证扩展性,都广泛地使用接口。显式实现接口,可以隐藏具体类的复杂性。
            return (IEnumerator<Person>)AllPersons.GetEnumerator();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }

        public void Add(Person Per)
        {
            if(Per is not null)
            AllPersons.Add(Per);

        }
        public override string ToString()
        {
            return $"{ClassName}";
        }

    }

 

posted @ 2021-11-04 19:01  小林野夫  阅读(193)  评论(0)    收藏  举报
原文链接:https://www.cnblogs.com/cdaniu/