学习在 C# 中使用 Lambda 运算符
在 C# 中,lambda 运算符 => 同时用于 lambda 表达式和表达式体成员。
1. Lambda 表达式
Lambda 表达式是一种简洁的表示匿名方法(没有名称的方法)的方法。它使用 lambda 运算符 =>,可以读作“转到”。运算符的左侧指定输入参数(如果有),右侧包含表达式或语句块。
以下是一个例子,
using System;
class Program
{static void Main(){Func<int, int> square = x => x * x;int number = 5;int result = square(number);Console.WriteLine($"The square of {number} is {result}");}
}
2. 表达式体成员
表达式体成员是使用 lambda 语法定义方法、属性、索引器或事件访问器的语法快捷方式。它们还使用 lambda 运算符 =>:
表达式体方法
public class MathOperations
{public int Add(int a, int b) => a + b;public int Multiply(int a, int b) => a * b;
}
在此示例中,Add 和 Multiply 是表达式体方法。它们以两个整数作为参数,分别返回和与乘积。
表达式体属性
public class Circle
{public double Radius { get; set; }public double Circumference => 2 * Math.PI * Radius;public double Area => Math.PI * Radius * Radius;
}
在此示例中,Circumference 和 Area 是表达式体属性。它们分别计算圆的周长和面积。
表达式体索引器
public class SimpleIndexer
{private readonly int[] _array = new int[10];public int this[int i]{get => _array[i];set => _array[i] = value;}
}
在此示例中,索引器是一个表达式体成员。它获取或设置指定索引处元素的值。
表达式体构造函数和终结器
public class Person
{private string _name;public Person(string name) => _name = name ?? throw new ArgumentNullException(nameof(name));~Person() => Console.WriteLine($"Finalizing {_name}");
}
在此示例中,构造函数和终结器都是表达式体成员。构造函数初始化 _name,如果 name 为 null,则抛出异常。终结器在对象被终结时向控制台写入一条消息。