加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为列表包装器实现IEnumerable

发布时间:2020-12-15 06:23:28 所属栏目:百科 来源:网络整理
导读:我有一个班级,这只是一个名单上的包装, public class Wrapper{ public Listint TList {get;set;} public Wrapper() { TList=new Listint(); }} 我想让Wrapper继承自IEnumerable,以便我可以使用以下语法: Wrapper wrapper = new Wrapper() { 2,4,3,6 }; 任何
我有一个班级,这只是一个名单上的包装,
public class Wrapper
{
   public List<int> TList
   {get;set;}
   public Wrapper()
   {
      TList=new List<int>();
   }
}

我想让Wrapper继承自IEnumerable,以便我可以使用以下语法:

Wrapper wrapper = new Wrapper()
                       {
                         2,4,3,6 
                       };

任何想法如何实现IEnumerable< T>或IEnumerable的哪个接口,以及如何定义方法体?

解决方法

如果您实现 ICollection<int>,您将获得所需的功能.

更正:实际上只需要实现IEnumerable或IEnumerable< T>并在您的课堂中添加一个公共添加方法:

public class Wrapper : IEnumerable<int>
{
    public List<int> TList
    { get; private set; }
    public Wrapper()
    {
        TList = new List<int>();
    }

    public void Add(int item)
    {
        TList.Add(item);
    }
    public IEnumerator<int> GetEnumerator()
    {
        return TList.GetEnumerator();
    }

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

(我也自由地将TList设置为私有的;通常建议集合类型属性是只读的,因此集合本身不能被类型外的任何代码所替代.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读