C#中IEnumerable的学习

C#中IEnumerable的学习

简介:

IEnumerable接口是非常的简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象。对于所有数组的遍历,都来自IEnumerable接口。 IEnumerator对象有什么呢?它是一个真正的集合访问器,没有它,就不能使用foreach语句遍历集合或数组,因为只有IEnumerator对象才能访问集合中的项,假如连集合中的项都访问不了,那么进行集合的循环遍历是不可能的事情了。

一、foreachIEnumerable中案例

 public static void Test3()
        {
            MyInt temp = new MyInt();
            foreach (int item in temp)
                Console.WriteLine(item);
        }
        //foreach的必须要实现IEnumerable和IEnumerator的接口
        public class MyInt : IEnumerable
        {
            int[] temp = { 1, 32, 43, 343 };

            public IEnumerator GetEnumerator()
            {
                return temp.GetEnumerator();
            }
        }

相当于下面代码:

   public static void Test1()
        {
            int[] myArray = { 1, 32, 43, 343 };
            //获取要遍历的枚举数
            IEnumerator myie = myArray.GetEnumerator();
            //重置当前项,相当于把指针移到初始位置:position = -1; 一开始认识数组的索引从“0”开始
            myie.Reset();
            //向前移动一个索引,返回Bool类型,判断是否超出下标
            while (myie.MoveNext())
            {
                int i = (int)myie.Current;//从Object转成对应类型
                Console.WriteLine("Value: {0}", i);
            }
        }

包含一个属性两个方法MoveNext:把当前的项移动到下一项(类似于索引值),返回一个bool值,这个bool值用来检查当前项是否超出了枚举数的范围!Current:获取当前项的值,返回一个object的类型!Reset:顾名思义也就是把一些值恢复为默认值,比如把当前项恢复到默认状态值!

二、Lamda在IEnumerable中案例

 //lamda表达式在数组中查询
        public static void Test2()
        {
            List<string> fruits =
              new List<string> { "apple", "passionfruit", "banana", "mango",
                    "orange", "blueberry", "grape", "strawberry" };
            //List<string> query = fruits.Where(fruit => fruit.Length < 6).ToList();
            IEnumerable<string> query = fruits.Where(fruit => fruit.Length < 6);
            foreach (string fruit in query)
                Console.WriteLine(fruit);

        }

只筛选出List中的元素长度小于6的值,然后打印出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值