C++ 和 C# 中的 Lambda 表达式
什么是 Lambda 表达式
Lambda 表达式是从匿名函数演化而来的一种语法。用来简化函数对象的创建。Lambda 表达式可以作为参数传递给函数,也可以被定义为变量和成员变量。Lambda 表达式可以是任何有返回值的函数。
C++ 使用 Lambda 表达式
C++11 开始支持 Lambda 表达式,通过使用 Lambda 表达式,可以大大的减少使用函数指针的麻烦。Lambda 表达式的基本语法如下:
[capture-list] (parameters) -> return-type
{
// 函数体
}
其中,方括号中的内容是可选的,表示捕获局部变量。
以下是一个简单的示例:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
auto it = find_if(v.begin(), v.end(), [](int i) { return i > 3; });
if (it != v.end())
cout << "The first element larger than 3 is " << *it << endl;
return 0;
}
Lambda 表达式作为参数传递给 std::find_if()函数,其中实现了一个匿名函数作为查找谓词。
C# 使用 Lambda 表达式
C# 3.0 开始支持 Lambda 表达式,Lambda 表达式在 Linq 查询中被广泛使用。Lambda 表达式主要用于定义匿名方法。Lambda 表达式的基本语法如下:
(parameters) => expression
其中,小括号中的参数为方法的参数,箭头运算符后面的表达式就是方法体。Lambda 表达式本质上是一个委托类型的变量。
以下是一个简单的示例:
using System;
using System.Collections.Generic;
class Program {
static void Main(string[] args) {
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int firstLargerThan3 = numbers.Find(n => n > 3);
Console.WriteLine("The first element larger than 3 is {0}", firstLargerThan3);
}
}
Lambda 表达式作为参数传递给 List
总结
Lambda 表达式是一种可以简化函数对象的创建的语法。C++ 和 C# 都支持 Lambda 表达式,可以大大的减少使用函数指针的麻烦,同时也方便了函数对象的使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 和 C# 中的 lambda的方法技巧 - Python技术站