zoukankan      html  css  js  c++  java
  • IEnumerable 遍历用法

    咋一看到IEnumerable这个接口,我们可能会觉得很神奇,在一般的编程时,基本上我们是想不到去用它的,可是,俗话说得好,存在便是道理,那么,它对我们来说,能够带来哪些奇妙的事情呢?
    要想弄懂它,我们还是看看其定义吧!
    在MSDN上,是这么说的,它是一个公开枚举数,该枚举数支持在非泛型集合上进行简单的迭代。换句话说,对于所有数组的遍历,都来自IEnumerable,那么我们就可以利用这个特性,来定义一个能够遍历数组的通用方法,这样看来,是不是很神奇呢?
    例如:
       
         public static void Print(IEnumerable myList)
            {
                int i = 0;
                foreach (Object obj in myList)
                {
                    if (obj is Student)//这个是类型的判断,这里Student是一个类或结构
                    {
                        Student s=(Student)obj;
                        Console.WriteLine("	[{0}]:	{1}", i++, s.Sname);
                    }
                    if (obj is int)
                    {
                        Console.WriteLine("INT:{0}",obj);
                    }
                }
                Console.WriteLine();
            }
    上面,我们可以在foreach中进行多个if判断,来进行相应的操作。
    IEnumerable 的另一个用法是在泛型中的使用。其中用lamda表达式在数组中查询,具体例子如下:
            
    List<string> fruits = new List<string> { "apple", "orange", "banana" };
                //去遍历
                IEnumerable<string> query = fruits.Where(fruit => fruit.Length == 6);
                foreach (var q in query)
                {
                    Console.WriteLine(q);
                }
           Console.ReadLine();
    有四个数据,int a=1,b=2,c=3,d=4,如何轮训他们 若有一个小于0 或大于10 就报警。
    最笨的办法就是对一个一个if判断。求比较优的方法 
     private void button1_Click(object sender, EventArgs e)
            {
               double a= 11.0;
               double b = 2.0;
               double c = 0.1;
               double d = 6.0;
    
                bool flag = Waring(a,b,c,d);
    
            }
            static bool Waring(params double[] numbers)
            {
                if (numbers == null || numbers.Length == 0)
                {
                    throw new ArgumentException();
                }
                return numbers.Any(i => i < 0 || i > 10);
            }

     注意:IEnumerable的any和all 方法 。

    any表示确定序列中的任何元素是否都满足条件,all表示确定序列中的所有元素是否都满足条件

    举个栗子:

            List<string> fruits = new List<string>() { "apple", "banana", "orange" };
                bool flag = fruits.All(i => { Console.WriteLine(i); return (i.Length > 3); });

    all时 将输出结果:apple banana orange

    any时将输出结果:apple

    因此 any当序列中有元素满足条件后,就不接下去判断了 直接出true

    Any是只要有一个满足结果就是true,否则是false。
    All是只要有一个不满足结果就是false,否则是true。

  • 相关阅读:
    GeoHash
    CMake官方教程翻译文档
    常用开源系统
    Python Tools
    CMake 笔记
    Nginx 多进程连接请求/事件分发流程分析
    连麦方案中各条流之间时间戳同步问题
    音视频重新编码时间戳同步问题
    基于网络流音视频包的音视频解码思路
    协程库st(state threads library)原理解析
  • 原文地址:https://www.cnblogs.com/zhayunjia/p/4073911.html
Copyright © 2011-2022 走看看