创建 lambda 表达式
来源:互联网 发布:数据接口管理办法 编辑:程序博客网 时间:2024/06/05 18:33
1.首先创建单行的lambda表达式函数
在任何可以使用委托类型的情况下,键入关键字Function,如下面的示例所示:
Dim add1 =Function
在紧跟在 Function 后面的括号中键入函数的参数。 请注意,不要在 Function 后面指定名称。
Dim add1 = Function(num As Integer)
在参数列表后面,键入单个表达式作为函数体。该表达式计算得出的值即为函数返回的值。不要使用 As 子句指定返回类型。
Dim add1 = Function(num As Integer) num + 1
可以通过传递整数参数来调用 lambda 表达式。
' The following line prints 6.Console.WriteLine(add1(5))
或者,也可以按下面的示例所示得到同样的结果:
Console.WriteLine((Function(num As Integer) num + 1)(5))我对红色的部分感兴趣,有些程序员写代码喜欢简写和简洁于是一条语句里既包括了函数体也把相应的参数进行传入。
但是对于我这样起初学习lambda表达式的人还是有点晦涩的。所以从维护和读懂的角度来看还是分开写比较好。
但是中国软件人员都是大多合并到一起的。所以为了读懂别人的优秀代码也只能学会这么写了。但是自己还是不会这么写的。
创建单行 lambda 表达式子例程
在任何可以使用委托类型的情况下,键入关键字 Sub,如下面的示例所示。
Dim add1 = Sub
在紧跟在 Sub 后面的括号中键入子例程的参数。 请注意,不要在 Sub 后面指定名称。
Dim add1 = Sub (msg As String)
在参数列表后面,键入单个语句作为子例程体。
VBDim writeMessage = Sub(msg As String) Console.WriteLine(msg)可以通过传递字符串参数来调用 lambda 表达式。
VB' The following line prints "Hello".writeMessage("Hello") 创建多行 lambda 表达式函数
在任何可以使用委托类型的情况下,键入关键字 Function,如下面的示例所示。
Dim add1 = Function
在紧跟在 Function 后面的括号中键入函数的参数。 请注意,不要在 Function 后面指定名称。
Dim add1 = Function (index As Integer)
按 Enter。 将自动添加 End Function 语句。
在函数体内,添加以下代码以创建表达式并返回值。 不要使用 As 子句指定返回类型。
VBDim getSortColumn = Function(index As Integer) Select Case index Case 0 Return "FirstName" Case 1 Return "LastName" Case 2 Return "CompanyName" Case Else Return "LastName" End Select End Function可以通过传递整数参数来调用 lambda 表达式。
VBDim sortColumn = getSortColumn(0)
创建多行 lambda 表达式子例程
在任何可以使用委托类型的情况下,键入关键字 Sub,如下面的示例所示:
Dim add1 = Sub
在紧跟在 Sub 后面的括号中键入子例程的参数。 请注意,不要在 Sub 后面指定名称。
Dim add1 = Sub(msg As String)
按 Enter。 将自动添加 End Sub 语句。
在函数体内,添加以下代码以在调用子例程时执行。
VBDim writeToLog = Sub(msg As String) Dim log As New EventLog() log.Source = "Application" log.WriteEntry(msg) log.Close() End Sub可以通过传递字符串参数来调用 lambda 表达式。
VBwriteToLog("Application started.")
lambda 表达式的一个常见用途是定义一个函数,该函数可作为 Delegate 类型的形参的实参进行传递。 在下面的示例中,GetProcesses 方法返回在本地计算机上运行的进程的数组。 Enumerable 类中的 Where 方法需要使用一个 Boolean 委托作为参数。 该示例中的 lambda 表达式就是为此目的而使用的。 对于每个仅有一个线程的进程以及在 filteredList 中选择的进程,它将返回 True。
VBSub Main() ' Create an array of running processes. Dim procList As Process() = Diagnostics.Process.GetProcesses ' Return the processes that have one thread. Notice that the type ' of the parameter does not have to be explicitly stated. Dim filteredList = procList.Where(Function(p) p.Threads.Count = 1) ' Display the name of each selected process. For Each proc In filteredList MsgBox(proc.ProcessName) NextEnd Sub上一个示例等效于下面用语言集成查询 (LINQ) 语法编写的代码:
VBSub Main() Dim filteredQuery = From proc In Diagnostics.Process.GetProcesses Where proc.Threads.Count = 1 Select proc For Each proc In filteredQuery MsgBox(proc.ProcessName) NextEnd Sub
- 创建 lambda 表达式
- 动态创建Lambda 表达式的例子!
- 使用lambda表达式的方式创建监听器
- 动态创建Lambda表达式实现高级查询
- 使用Expression动态创建lambda表达式
- 动态创建Lambda表达式实现高级查询
- c#3.0新特性使用lambda表达式创建表达式树
- Lambda Expressions(Lambda表达式)
- Lambda表达式
- Lambda表达式
- Lambda 表达式
- Lambda表达式
- lambda表达式
- lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda表达式
- Android 开发环境搭建 与在编译中遇到错误make Error 45解决方法
- 自动登录163邮箱的批处理
- 25个有用的jQuery日历和日期选取插件
- Flex中使用全屏设置和需要注意的地方
- 采用DOM4J解析xml,带例子。
- 创建 lambda 表达式
- js Date对象扩展
- 推荐一个不错的jquery学习博客
- linux模块编程(三)——线程的约会completion
- Ubuntu系统 + VMware虚拟机+32位编译环境 安装编译Android2.3源码
- xFire实现Java间自定义类型的WebService调用(一)
- Redhat 5.4 + ASM + RAW+ Oracle 10g RAC 安装文档
- xFire实现Java间自定义类型的WebService调用(二)
- redhat 5.4 下 Oracle RAC 报 raw 设备大小 错误