美高梅网投网站-美高梅手机网投-美高梅官方网站
做最好的网站

您的位置:美高梅网投网址 > 美高梅网站 > 美高梅手机网投2.测量检验和打字与印刷分开,定

美高梅手机网投2.测量检验和打字与印刷分开,定

发布时间:2019-11-08 02:46编辑:美高梅网站浏览(105)

    三、查询群集

    正文内容

    • 引入
    • 概述
    • 无名函数
    •     Lambda 表达式
    •     无名方式
    • 参照资料

      引入

    本文在 VS 2010 碰着下,解说本身对 Lambda 表明式、佚名函数、委托和 LINQ 谈谈自个儿的通晓。笔者对那几个主题材料的研究,始于以下阶段:

    • 毕业刚参加专门的学业时,使用 VS 二零零六 C#,它还没有曾 LINQ 特性。这个时候的要紧精力在后台代码,开头调节了信托、泛型等,以至设计情势,并尝试编写 JavaScript 代码,只是不太重视;
    • 而后,非常是换专门的工作后,对 JavaScript、jQuery、Ajax 、DOM、HTML、CSS爆发了兴趣,发掘它们看似 JSON 的书写格局很风趣,那时候已经使用 VS 二〇一〇,也会有这种方法,由此在实质上项目中时常地行使这种措施书写;
    • 中间,知道了 LINQ,感到不错,在超大程度上,左近自然语言,简化了代码逻辑和代码量;
    • 但难点是,这种书写情势除了跟以前(VS 二零零六 前卡塔尔国完全两样外,无论是 JavaScript,照旧C#,这种措施,可以在不定义变量,不定义函数名、形参和再次回到值类型等气象下采纳,的确令人疑忌;
    • 为了越来越好的知情这种书写情势,我学习了 JSON 的理论,之后是 Lambda 表达式、LINQ。

    反复,当你贫乏某方面知识时,对叁个标题的领会不或者深远。

     

    1.找寻List<Product>列表中相符特定条件的富有因素

    概述

    大家都知情,定义三个函数,要知名字,恐怕要有形参列表、再次回到值类型。即正是现行反革命,也是那般。

    而 Lambda 演算(Lambda calculus卡塔尔,告诉程序员们,其实不然,定义函数能够没知名字,未有形参列表,未有回去值类型,什么都不曾,独有函数体,一些表明式或是语句(以后精晓那是基于 Lambda 的项目推理卡塔 尔(英语:State of Qatar),那便是佚名函数。

    单向——委托,委托也即是函数(方法卡塔 尔(阿拉伯语:قطر‎指针(事件是信托的特例卡塔 尔(英语:State of Qatar),那么完全能够运用佚名函数简化委托。Lambda 表明式的论争根基是Lambda 演算(Alonzo Church, 壹玖贰柒卡塔 尔(阿拉伯语:قطر‎。

    LINQ 正是依据 Lambda 表明式(无名氏函数卡塔尔、泛型和简化的寄托。

    本文的根本是从大的地点上精晓 Lambda 表明式和其接受,而不是它的语法。

     

    C#1.1 查询步骤:循环,if决断,打印

    无名氏函数

    无名氏函数是一个“内联(inline卡塔 尔(阿拉伯语:قطر‎”语句或表达式,可在急需委托项目标其他地点使用。能够选取无名函数来初步化命名委托,或传递命名委托(并非命名委托项目卡塔尔作为艺术参数。

    有两种佚名函数:

    • Lambda 表达式
    • 无名氏方式

    product类

    C# 中央委员托的前进

    • C# 1.0 中,通过用其它岗位定义的主意显式早先化委托来创建委会托的实例。
    • C# 2.0 引进了无名氏方式(anonymous method卡塔 尔(阿拉伯语:قطر‎的定义,用无名氏方式初步化委托,在信托中举办未命名的内联语句块。
    • C# 3.0 引进了 Lambda 表达式,与匿有名的模特式的定义相符,但更具表现力并且更简短。佚名情势和拉姆da 表明式统称为“无名氏函数”。
    • 平凡,针对 .NET Framework 3.5 及越来越高版本应运用 Lambda 表达式。

    上面包车型地铁演示演示了从 C# 1.0 到 C# 3.0 委托创设进度的上扬:

    美高梅手机网投 1美高梅手机网投 2View Code

    class Test
    {
        delegate void TestDelegate(string s);
        static void M(string s)
        {
            Console.WriteLine(s);
        }
    
        static void Main(string[] args)
        {
            // C# 1.0: 最初的委托语法,用一个方法名初始化委托.
            TestDelegate testdelA = new TestDelegate(M);
    
            // C# 2.0: 用内联代码初始化委托,这个内联代码成为“匿名方法”.
            // 这个方法把一个字符串作为输入参数.
            TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); };
    
            // C# 3.0: 用 Lambda 表达式初始化委托. 
            // Lambda 表达式也把一个字符串(x)作为输入参数.
            // 编译器可以推断 x 的数据类型.
            TestDelegate testDelC = (x) => { Console.WriteLine(x); };
    
            // 调用委托.
            testdelA("Hello. My name is M and I write lines.");
            testDelB("That's nothing. I'm anonymous and ");
            testDelC("I'm a famous author.");
    
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
    }
    

    运转结果:

    美高梅手机网投 3美高梅手机网投 4View Code

    Hello. My name is M and I write lines.
    That's nothing. I'm anonymous and
    I'm a famous author.
    Press any key to exit.
    

     

    美高梅手机网投 5美高梅手机网投 6

    Lamda 表达式

    “Lambda 表明式”拓宽了大家对函数的认知,简化了函数定义。而委托又是八个外表函数(方法卡塔尔的指针,因而,也就简化了寄托。

    Lambda 表明式是二个无名氏函数,包蕴表明式或讲话,可用来创设委托或表达式树类型。

    表明式都应用 拉姆da 运算符 =>。运算符左侧是输入参数(借使有卡塔 尔(阿拉伯语:قطر‎,侧面包涵表明式或语句块。

    创建委托,如下所示:

    美高梅手机网投 7美高梅手机网投 8View Code

    delegate int del(int i);
    static void Main(string[] args)
    {
        del myDelegate = x => x * x;
        int j = myDelegate(5); // j = 25
    }
    

    始建表明式树,如下所示:

    美高梅手机网投 9美高梅手机网投 10View Code

    using System.Linq.Expressions;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Expression<del> myET = x => x * x; //
            }
        }
    }
    

    在依赖方法的 LINQ 查询中,如 Where,Lambda 表明式作为标准查询运算符方法的参数。

     1 using System.Collections;
     2 using System.ComponentModel;
     3 
     4 namespace Chapter01.CSharp1
     5 {
     6     [Description("Listing 1.01")]
     7     public class Product
     8     {
     9         string name;
    10         public string Name
    11         {
    12             get { return name; }
    13         }
    14 
    15         decimal price;
    16         public decimal Price
    17         {
    18             get { return price; }
    19         }
    20 
    21         public Product(string name, decimal price)
    22         {
    23             this.name = name;
    24             this.price = price;
    25         }
    26 
    27         public static ArrayList GetSampleProducts()
    28         {
    29             ArrayList list = new ArrayList();
    30             list.Add(new Product("West Side Story", 9.99m));
    31             list.Add(new Product("Assassins", 14.99m));
    32             list.Add(new Product("Frogs", 13.99m));
    33             list.Add(new Product("Sweeney Todd", 10.99m));
    34             return list;
    35         }
    36 
    37         public override string ToString()
    38         {
    39             return string.Format("{0}: {1}", name, price);
    40         }
    41     }
    42 }
    

    Lambda 表达式

    运算符左边是“Lambda 表明式”。Lambda 表明式在布局表明式树时遍布使用。拉姆da 表明式再次来到表明式的结果,选取以下为主形式:

    (input parameters) => expression
    

    平日来讲所示:

    (x, y) => x == y
    

    临时,编写翻译器难于或不能够测算输入类型。此时得以显式钦定项目:

    (int x, string s) => s.Length > x
    

    利用空括号内定零个输入参数:

    () => SomeMethod()
    

    View Code

    Lambda 语句

    拉姆da 语句与 Lambda 表明式相同,只是语句括在大括号中:

    (input parameters) => {statement;}
    

    Lambda 语句的入眼能够富含自由数量的语句。

    美高梅手机网投 11美高梅手机网投 12View Code

    delegate void TestDelegate(string s);
    …
    TestDelegate myDel = n => { string s = n + "" + "World"; Console.WriteLine(s); };
    myDel("Hello");
    

    像匿超级模特式相同,拉姆da 语句无法用于成立表明式树。

    ArrayListQuery类

    富含标准查询运算符的 Lambda

    广大正式查询运算符都具备输入参数,其连串是泛型委托的 Func<Of T, TResult> 类别的中间之生龙活虎。如Enumerable.Count 方法、Enumerable.Max方法、Enumerable.Min 方法等等。

    Func<Of T, TResult> 中的 "Of T" 表示输入参数的数额和项目;"TResult" 表示委托的回来类型。Func 委托对于使用在乎气风发组数据中各种成分极度常有效。

    例如,假使有以下委托项目:

    美高梅手机网投 13美高梅手机网投 14View Code

    public delegate TResult Func<TArg0, TResult>(TArg0 arg0)
    

    若用 Func<int,bool> myFunc 来实例化这些委托,那么,int 是输入参数,bool 是重临值。始终在最后八个品类参数中内定重回值。若用 Func<int, string, bool> 来实例化,那么五个 int 和 string是输入参数,何况重回类型为 bool。

    正如所示,调用上边 Func 委托,将回来 true 或 false 以提醒输入参数是或不是等于 5:

    美高梅手机网投 15美高梅手机网投 16View Code

    Func<int, bool> myFunc = x => x == 5;
    bool result = myFunc(4);
    

    当参数类型为 Expression<Func> 时,也能够提供 拉姆da 表达式,比如在 System.Linq.Queryable 钦点义的标准查询运算符中。假设钦赐Expression<Func> 参数,拉姆da 将编写翻译为表明式树。

    日常来讲所示,演示二个正经查询运算符 Count 方法,总结整数 (n) 除以 2 余数为 1 的整数:

    美高梅手机网投 17美高梅手机网投 18View Code

    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
    int oddNumbers = numbers.Count(n => n % 2 == 1);
    

    编写翻译器能够测算输入参数的类别,也许您也足以显式钦赐该品种。

    正如所示,演示重返数组 9 左边的有着因素,因为 9 是种类中不知足条件的率先个数字:

    美高梅手机网投 19美高梅手机网投 20View Code

    var firstNumbersLessThan6 = numbers.TakeWhile(n => n < 6);
    

    美高梅手机网投 21美高梅手机网投 22

    拉姆da 中的类型推理

    在编辑 Lambda 时,平日不必为输入参数内定项目,因为编写翻译器能够依据 兰姆da 主体、底蕴委托项目以致 C# 语言规范中陈述的别的因素忖度类型。

    对于大大多正经查询运算符,第2个输入是源种类桐月素的花色。由此,假使要查询 IEnumerable<Customer>,则输入变量将被揣摸为 Customer 对象,因而你能够访谈其方法和性质:

    美高梅手机网投 23美高梅手机网投 24View Code

    customers.Where(c => c.City == "London");
    

    Lambda 的相像法规如下:

    • 拉姆da 蕴含的参数数量必须与寄托项目饱含的参数数量同样。
    • Lambda 中的每一种输入参数必需都能够隐式调换为其相应的寄托参数。
    • Lambda 的再次回到值(假如有卡塔尔国必得能够隐式转换为委托的回到类型。

    小心,Lambda 表明式自身未有项目,因为健康项目系统还没有“Lambda 表明式”这一中间概念。不过,有时会不专门的学业地论及 Lambda 表明式的“类型”。在这里些情况下,类型是指委托项目或 拉姆da 表明式所改动为的 Expression 类型。

     1 using System;
     2 using System.Collections;
     3 using System.ComponentModel;
     4 
     5 namespace Chapter01.CSharp1
     6 {
     7     [Description("Listing 1.10")]
     8     class ArrayListQuery
     9     {
    10         static void Main()
    11         {
    12             ArrayList products = Product.GetSampleProducts();
    13             foreach (Product product in products)
    14             {
    15                 if (product.Price > 10m)
    16                 {
    17                     Console.WriteLine(product);
    18                 }
    19             }
    20         }
    21     }
    22 }
    

    何以:在询问中央银行使 Lambda 表达式

    不会在询问语法中央职能部门接用到 Lambda 表达式,但会在措施调用中用到,而且询问表明式(查询语法卡塔 尔(阿拉伯语:قطر‎能够满含方法调用(方法语法卡塔 尔(阿拉伯语:قطر‎。事实上,有些查询操作只可以用艺术语法表示。

    日常来讲所示,查询语法与格局语法:

    美高梅手机网投 25美高梅手机网投 26View Code

    class QueryVMethodSyntax
    {
        static void Main()
        {
            int[] numbers = { 5, 10, 8, 3, 6, 12};
    
            // 查询语法:
            IEnumerable<int> numQuery1 = 
                from num in numbers
                where num % 2 == 0
                orderby num
                select num;
    
            // 方法语法:
            IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n);
    
            foreach (int i in numQuery1)
            {
                Console.Write(i + "");
            }
            Console.WriteLine(System.Environment.NewLine);
            foreach (int i in numQuery2)
            {
                Console.Write(i + "");
            }
    
            // Keep the console open in debug mode.
            Console.WriteLine(System.Environment.NewLine);
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
    

    运营结果:

    美高梅手机网投 27美高梅手机网投 28View Code

    6 8 10 12
    6 8 10 12
    

    亲自过问1:演示使用规范查询运算符 Enumerable.Where,基于方立陶宛(Lithuania卡塔尔语法(Lambda 表明式卡塔尔国查询。注意,示例中的 Where 方法具备一个委托项目为 Func<TSource, Boolean> 的输入参数,委托行使整数作为输入,并回到布尔值。能够将 Lambda 表明式转变为该信托。纵然 Queryable.Where 方法(LINQ to SQL 查询卡塔 尔(英语:State of Qatar),则参数类型为 Expression<Func<int,bool>>,但 Lambda 表达式看起来将完全雷同。

    美高梅手机网投 29美高梅手机网投 30View Code

    // Enumerable.Where
    // The call to Count forces iteration of the source
    int[] scores = { 90, 71, 82, 93, 75, 82 };
    int highScoreCount = scores.Where(n => n > 80).Count();
    Console.WriteLine("{0} scores are greater than 80", highScoreCount);
    
    // Queryable.Where
    // Get all strings whose length is less than 6.
    List<string> fruits = new List<string> { "apple", "passionfruit", "banana", "mango", 
               "orange", "blueberry", "grape", "strawberry" };
    IEnumerable<string> query = fruits.AsQueryable().Where(fruit => fruit.Length < 6);
    foreach (string fruit in query)
        Console.WriteLine(fruit);
    
    Console.ReadKey();
    

    运行结果:

    美高梅手机网投 31美高梅手机网投 32View Code

    4 scores are greater than 80
    apple
    mango
    grape
    

    亲自过问2:演示在查询语法中利用方式语法(Lambda 表明式卡塔尔。拉姆da 是不可缺乏的,因为无法使用查询语法来调用 Sum 标准查询运算符。

    查询首先按 GradeLevel 枚举中定义的艺术,依靠学子的实际绩效品级分组。然后,对种种组,增加每种学子的总分。那亟需五个Sum 运算。内部的 Sum 计算每名学子的总分,外界的 Sum 保留该组中全部学生的周转统生机勃勃总结。

    美高梅手机网投 33美高梅手机网投 34View Code

    // This query retrieves the total scores for First Year students, Second Years, and so on.
    // The outer Sum method uses a lambda in order to specify which numbers to add together.
    var categories =
    from student in students
    group student by student.Year into studentGroup
    select new { GradeLevel = studentGroup.Key, TotalScore = studentGroup.Sum(s => s.ExamScores.Sum()) };
    
    // Execute the query.
    foreach (var cat in categories)
    {
          Console.WriteLine("Key = {0} Sum = {1}", cat.GradeLevel, cat.TotalScore);
    }
    

    运营结果:

    美高梅手机网投 35美高梅手机网投 36View Code

    Key = SecondYear Sum = 1014
    Key = ThirdYear Sum = 964
    Key = FirstYear Sum = 1058
    Key = FourthYear Sum = 974
    

    View Code

    何以:在 LINQ 外部使用 拉姆da 表明式

    拉姆da 表明式并不只限于在 LINQ 查询中接纳。可以选取在必要委托值的另内地方(也正是在能够行使匿有名的模特式的任哪个地点方卡塔 尔(阿拉伯语:قطر‎。上面演示怎样在 Windows 窗体育赛事件管理程序中动用 Lambda 表明式。注意,输入的花色(Object 和 Mouse伊夫ntArgs卡塔 尔(英语:State of Qatar)由编写翻译器推理,因而不必在 Lambda 输入参数中显式给定。

    美高梅手机网投 37美高梅手机网投 38View Code

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            // Use a lambda expression to define an event handler.
           this.Click += (s, e) => { MessageBox.Show(((MouseEventArgs)e).Location.ToString());};
        }
    }
    

    2.测量检验和打字与印刷分开

     

    C#2.0

    匿有名的模特式

    虽说先有的佚名方式,后有个别 拉姆da 表明式,但照旧在 拉姆da 后证实佚名方式。

    在 2.0 之前的 C# 版本中,评释委托的必由之路方式是使用命名情势(也正是用艺术名最初化委托卡塔尔。C# 2.0 引进了无名氏格局,而在 C# 3.0 及越来越高版本中,Lambda 表明式替代了无名格局,作为编写制定内联代码的首推办法。

    可是,本节有关匿超级模特式的消息相像适用于 Lambda 表达式。有生龙活虎种情景,无名氏情势提供了 Lambda 表达式中所未有的效率。匿超级模特式使您能够简单参数列表,那象征能够将无名氏形式调换为满含各种签字的委托。这对于 Lambda 表明式来讲是不大概的。

    下边演示实例化委托的二种方式,都会在调用委托时展现一条音信:

    • 使委托与匿有名的模特式关联。
    • 使委托与命名格局 (DoWork) 关联。

    美高梅手机网投 39美高梅手机网投 40View Code

    // Declare a delegate
    delegate void Printer(string s);
    
    class TestClass
    {
        static void Main()
        {
            // Instatiate the delegate type using an anonymous method:
            Printer p = delegate(string j)
            {
                System.Console.WriteLine(j);
            };
    
            // Results from the anonymous delegate call:
            p("The delegate using the anonymous method is called.");
    
            // The delegate instantiation using a named method "DoWork":
            p = new Printer(TestClass.DoWork);
    
            // Results from the old style delegate call:
            p("The delegate using the named method is called.");
        }
    
        // The method associated with the named delegate:
        static void DoWork(string k)
        {
            System.Console.WriteLine(k);
        }
    }
    

    运行结果:

    美高梅手机网投 41美高梅手机网投 42View Code

    The delegate using the anonymous method is called.
    The delegate using the named method is called.
    

    透过动用无名氏情势,不必创造单独的艺术,减弱了实例化委托所需的编码系统开采。

    诸如,假若成立方法所需的系统开荒是不供给的,则钦点代码块(并非寄托卡塔尔国可能这二个有效。运行新线程正是一个很好的示范。无需为委托创立越多格局,线程类就能够成立叁个线程况且包涵该线程实施的代码。

    美高梅手机网投 43美高梅手机网投 44View Code

    void StartThread()
    {
        System.Threading.Thread t1 = new System.Threading.Thread
          (delegate()
                {
                    System.Console.Write("Hello, ");
                    System.Console.WriteLine("World!");
                });
        t1.Start();
    }
    

     

    product类

    参照他事他说加以考察资料

    Wiki Lambda 表达式

    MSDN 无名函数

    MSDN 委托Func<Of T, TResult>

    MSDN 表明式树Expression<Func>

    System.Linq.Enumerable 类

    System.Linq.Queryable 类

    Good Math, Bad Math 关于Lambda 阐述

     

    Alonzo Church 一九三六故事集下载

    美高梅手机网投 45美高梅手机网投 46

     1 using System.Collections.Generic;
     2 using System.ComponentModel;
     3 
     4 namespace Chapter01.CSharp2
     5 {
     6     [Description("Listing 1.02")]
     7     public class Product
     8     {
     9         string name;
    10         public string Name
    11         {
    12             get { return name; }
    13             private set { name = value; }
    14         }
    15 
    16         decimal price;
    17         public decimal Price
    18         {
    19             get { return price; }
    20             private set { price = value; }
    21         }
    22 
    23         public Product(string name, decimal price)
    24         {
    25             Name = name;
    26             Price = price;
    27         }
    28 
    29         public static List<Product> GetSampleProducts()
    30         {
    31             List<Product> list = new List<Product>();
    32             list.Add(new Product("West Side Story", 9.99m));
    33             list.Add(new Product("Assassins", 14.99m));
    34             list.Add(new Product("Frogs", 13.99m));
    35             list.Add(new Product("Sweeney Todd", 10.99m));
    36             return list;
    37         }
    38 
    39         public override string ToString()
    40         {
    41             return string.Format("{0}: {1}", name, price);
    42         }
    43     }
    44 }
    

    View Code

    ListQueryWithDelegates类

    美高梅手机网投 47美高梅手机网投 48

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 
     5 namespace Chapter01.CSharp2
     6 {
     7     [Description("Listing 1.11")]
     8     class ListQueryWithDelegates
     9     {
    10         static void Main()
    11         {
    12             List<Product> products = Product.GetSampleProducts();
    13             Predicate<Product> test = delegate(Product p)
    14                 { return p.Price > 10m; };
    15             List<Product> matches = products.FindAll(test);
    16 
    17             Action<Product> print = Console.WriteLine;
    18             matches.ForEach(print);
    19         }
    20     }
    21 }
    

    View Code

    变量test的开端化使用了无名方式,而print变量的最早化使用了方法组调换,它简化了从现存措施制造委托的长河。不唯有轻便何况有力!

    ListQueryWithDelegatesCompact类

    美高梅手机网投 49美高梅手机网投 50

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 
     5 namespace Chapter01.CSharp2
     6 {
     7     [Description("Listing 1.12")]
     8     class ListQueryWithDelegatesCompact
     9     {
    10         static void Main()
    11         {
    12             List<Product> products = Product.GetSampleProducts();
    13             products.FindAll(delegate(Product p) { return p.Price > 10; })
    14                     .ForEach(delegate(Product p) { Console.WriteLine(p); });
    15         }
    16     }
    17 }
    

    View Code

    3.用lambda表明式来测验

    C#3.0

    product

    美高梅手机网投 51美高梅手机网投 52

     1 using System.Collections.Generic;
     2 using System.ComponentModel;
     3 
     4 namespace Chapter01.CSharp3
     5 {
     6     [Description("Listing 1.3")]
     7     class Product
     8     {
     9         public string Name { get; private set; }
    10         public decimal Price { get; private set; }
    11 
    12         public Product(string name, decimal price)
    13         {
    14             Name = name;
    15             Price = price;
    16         }
    17 
    18         Product()
    19         {
    20         }
    21 
    22         public static List<Product> GetSampleProducts()
    23         {
    24             return new List<Product>
    25             {
    26                 new Product { Name="West Side Story", Price = 9.99m },
    27                 new Product { Name="Assassins", Price=14.99m },
    28                 new Product { Name="Frogs", Price=13.99m },
    29                 new Product { Name="Sweeney Todd", Price=10.99m}
    30             };
    31         }
    32 
    33         public override string ToString()
    34         {
    35             return string.Format("{0}: {1}", Name, Price);
    36         }
    37     }
    38 }
    

    View Code

    ListQueryWithLambdaExpression类

    美高梅手机网投 53美高梅手机网投 54

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Linq;
     5 
     6 namespace Chapter01.CSharp3
     7 {
     8     [Description("Listing 1.13")]
     9     class ListQueryWithLambdaExpression
    10     {
    11         static void Main()
    12         {
    13             List<Product> products = Product.GetSampleProducts();
    14             foreach (Product product in products.Where(p => p.Price > 10))
    15             {
    16                 Console.WriteLine(product);
    17             }
    18         }
    19     }
    20 }
    

    View Code

    总结:

    →C#1,条件和操作紧凑耦合两个都以硬编码的

    →C#2,条件和操作分开,无名格局使委托变得轻松(无名氏格局拉动难题的可抽离性卡塔尔

    →C#3Lambda表明式使原则变得更便于阅读(拉姆da表达式加强了可读性卡塔 尔(阿拉伯语:قطر‎。

    本文由美高梅网投网址发布于美高梅网站,转载请注明出处:美高梅手机网投2.测量检验和打字与印刷分开,定

    关键词:

上一篇:没有了

下一篇:预备Computer 和 分区,一张图学 Python.jpg