• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#每天温习一点(IEnumerableTSource)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

       1, IEnumerable<TSource> 多数屌丝写成  IEnumerable<T>  无论TSource还是T都代表一个意思:要枚举的对象的类型 。IEnumerable<T>是一个枚举器,该枚举器支持在指定类型的集合上进行简单迭代(官方解释),简单的说就是实现了IEnumerable<T> 接口才能使用foreach 迭代。

       2,首先先看下如何实现自定义类的迭代。下面来看一段代码。这里首先定义了一个Dog类,为该类添加了索引器和实现IEnumerable接口。实现的三大方法便可以foreach啦。通常我们在做类似自定义Session管理的时候会采用这样设计思想。

      

  public class Dogs : IEnumerable, IEnumerator
    {
        public string name { get; set; }
        public bool sex { get; set; }
        public List<object> list = new List<object>();
        int dex = -1;
        /// <summary>
        /// 屌丝。这是一个索引器
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public object this[int index]
        {
            get
            {
                return list[index];
            }
            set
            {
                list[index] = value;
            }
        }
        public void Add<T>(T t)
        {
            list.Add(t);
        }
        public IEnumerator GetEnumerator()
        {
            return (IEnumerator)this;
        }
        public object Current
        {
            get { return this[dex]; }
        }
        public bool MoveNext()
        {
  if (dex >= list.Count-1)
            {
                return false;
            } dex
++; return true; } public void Reset() { dex = -1; } }

        这个关于Dogs的类有个索引器。所以它能存储数据。它实现了IEnumerable so,他就能迭代了,是不是很神。

      

           string[] str = { "1", "2", "213" };
            Dogs dogs = new Dogs();
            foreach (var item in str)
            {
                dogs.Add(new Dogs()
                {
                    name = item,
                });
            }
            foreach (Dogs item in dogs)
            {
                Console.WriteLine(item.name);
            }

    二:接下来是一个奇奇怪怪的拓展方法:这个方法在字符串处理的时候的很好用,这个可以将一个实现了IEnumerable接口的类如 List<t>拼成字符串。是做前后端交互的必备。可以节省各位屌丝的大量时间。

   

       public static string ToSealString(this IEnumerable l, string split)
        {
            split = ",";
            StringBuilder strText = new StringBuilder();
            var e = l.GetEnumerator();
            while (e.MoveNext())
            {

                strText.Append(e.Current.ToString() + split);
            }
            if (strText.Length > 1)
            {
                strText = strText.Remove(strText.Length - split.Length, 1);
            }
            return strText.ToString();
        }

      ps:欢迎指正。补充,下班了,以后再补充。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
在C#中使用属性控件添加属性窗口发布时间:2022-07-14
下一篇:
c#读取LOG文件并解决读取提示被其他进程占用问题发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap