zoukankan      html  css  js  c++  java
  • C# => 运算符

    lambda 运算符

    在 lambda 表达式中,lambda 运算符 => 将左侧的输入参数与右侧的 lambda 主体分开。

    以下示例使用带有方法语法的 LINQ 功能来演示 lambda 表达式的用法:

    1 string[] words = { "bot", "apple", "apricot" };
    2 int minimalLength = words
    3   .Where(w => w.StartsWith("a"))
    4   .Min(w => w.Length);
    5 Console.WriteLine(minimalLength);   // output: 5
    6 
    7 int[] numbers = { 1, 4, 7, 10 };
    8 int product = numbers.Aggregate(1, (interim, next) => interim * next);
    9 Console.WriteLine(product);   // output: 280

    lambda 表达式的输入参数在编译时是强类型。 

    当编译器可以推断输入参数的类型时,如前面的示例所示,可以省略类型声明。 

    如果需要指定输入参数的类型,则必须对每个参数执行类型声明,如以下示例所示:

    1 int[] numbers = { 1, 4, 7, 10 };
    2 int product = numbers.Aggregate(1, (int interim, int next) => interim * next);
    3 Console.WriteLine(product);   // output: 280

    以下示例显示如何在没有输入参数的情况下定义 lambda 表达式:

    1 Func<string> greet = () => "Hello, World!";
    2 Console.WriteLine(greet());

    表达式主体定义

    表达式主体定义具有下列常规语法:

    member => expression;

    其中 expression 是有效的表达式。 

    expression 的返回类型必须可隐式转换为成员的返回类型。 

    如果成员的返回类型是 void,或者如果成员是构造函数、终结器或属性 set 访问器,则 expression 必须是语句表达式,其可以是任意类型 。

    以下示例演示了用于 Person.ToString 方法的表达式主体定义:

    public override string ToString() => $"{fname} {lname}".Trim();

    它是以下方法定义的简写版:

    1 public override string ToString()
    2 {
    3    return $"{fname} {lname}".Trim();
    4 }

    自 C#6 起,支持方法、运算符和只读属性的表达式主体定义。 自 C# 7.0 起,支持构造函数、终结器、属性和索引器访问器的表达式主体定义。

  • 相关阅读:
    Codeforce Round #215 Div2 C
    Facebook Hacker Cup 2014 Qualification Round
    Codeforce Round #214 Div2
    Codeforce Round #213 Div2
    FOJ 2013 11 月赛
    Codeforce Round #211 Div2
    Codeforce Round #210 Div2
    如何下载spring-framework
    [转]大型网站系统架构的演化
    sql查询,如何增加一列
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/12469615.html
Copyright © 2011-2022 走看看