Lambda expressions , Action , Func and Predicate

http://www.tutorialsteacher.com/csharp/csharp-action-delegate

lambda 表达式

Action,func

lambda表达式是什么,其有什么优点,不使用lambda

其的目的:简化代码。

在JAVA当中一般是使用接口来实现

Action is also a delegate type defined in the System namespace. An Action type delegate is the same as Func delegate except that the Action delegate doesn‘t return a value. In other words, an Action delegate can be used with a method that has a void return type.

Action  is also a delegate type 其也可以推导出来两个结论。

1. action 是一个type,类似于int, 那就可以定义变量,其定义一个什么样类型的变量,其变量的含义是什么。就需要下面一个推论。

2. action 是一个delegate type,其就是一个delegate,那就是一个函数指针,用于方法之间的调用。

其包含有delegate的所有特点,那其又有什么不同。

3. 有了delegate那又要有Action,使用action其的目的是为了更加简化。

public delegate void Print(int val);

delegate 其需要先定义且要定义方法名

Action<int>  其就直接定义形参的类型且不要返回值。
 

Advantages of Action and Func delegates:

  1. Easy and quick to define delegates.

  2. Makes code short.
  3. Compatible type throughout the application.

【action 其使用的场景】

1. 在框架当中的线程之间使用

this._readThread = ThreadEx.ThreadCall(new Action(this.ReadThread));

public static System.Threading.Thread ThreadCall(System.Action action)
{
return ThreadEx.ThreadCall(action, null);
}

public static System.Threading.Thread ThreadCall(System.Action action, string name)
{
return ThreadEx.Call(action, name);
}

public static System.Threading.Thread Call(System.Action action, string name)
{
    System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(action.Invoke));
if (name != null)
    {
        thread.Name = name;
    }
    thread.Start();
return thread;
}

时间: 2024-10-17 16:33:11

Lambda expressions , Action , Func and Predicate的相关文章

Lambda Action Func练习

namespace lambda { delegate void TestDelegate(string s); class Program { static void Main(string[] args) { //动态构建C# Lambda表达式例子1 var ints = new int[10] {10,2,3,4,5,2,34,54,4,40}; var newints = ints.Where(i => i > 20); foreach (var a in newints) { Co

C#中常见的委托(Func委托、Action委托、Predicate委托)

今天我要说的是C#中的三种委托方式:Func委托,Action委托,Predicate委托以及这三种委托的常见使用场景. Func,Action,Predicate全面解析 首先来说明Func委托,通过MSDN我们可以了解到,Func委托有如下的5种类型: (1) *delegate TResult Func<TResult>(); (2)*delegate TResult Func<T1,TResult>(T1 arg1); (3) *delegate TResult Func&

jdk8新特性之lambda expressions

本文分两部分: 语法简单说明 lambda的使用 注:这两部分内容均以类+注释的方式进行说明,并且内容均来自官方教程(https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html). 第一部分: /** * 语法说明类 * * lambda表达式包含下面几个要素: * 1.逗号分隔的参数列表,如CheckPerson.test(Person p),其中p表示一个Person的对象实例 * 2.向右箭头 →,

使用lambda表达式和函数式接口Predicate

例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例.看一下Java 8之前的runnable实现方法,需要4行代码,而使用lambda表达式只需要一行代码.我们在这里做了什么呢?那就是用() -> {}代码块替代了整个匿名类. // Java 8之前: new Thread(new Runnable() { @Override public void run() { System.o

Lambda Expressions表达式使用

很多时候我们在使用Lambda表达式查询时,比如使用Lambda表达式查询用户数据,有时候会用电话或邮箱去查询用户信息,有时候又会用户名去查询用户信息 var user = db.Set<U_User>().Where(c => c.UserName = "nee32"); var user = db.Set<U_User>().Where(c => c.TelePhone = "13888888888"); 其实查询的结果都一样

委托,C#本身的委托(Action Func)

1.Action 分为带泛型的和不带泛型的,带泛型可传入任何类型的参数. 格式如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Windows.Input; 7 8 namespace Demo1 9 { 10 class Program 11 { 12 st

When to Use Nested Classes, Local Classes, Anonymous Classes, and Lambda Expressions

As mentioned in the section  Nested Classes, nested classes enable you to logically group classes that are only used in one place, increase the use of encapsulation, and create more readable and maintainable code. Local classes, anonymous classes, an

Lambda Expressions 笔记

随Java 8发布,"The Java(TM) Tutorials"增加了关于“Lambda Expressions”的教程.本文是此教程的总结.摘要. 一.Lambda的实质是一个匿名类 二.Lambda公式只能实现 functional 接口: 1. 只有一个虚方法的借口,叫做 functional 接口: 2. functional 接口中可以有一个或多个默认方法和静态方法. 三.Lambda公式的格式 例如: p -> p.getGender() == Person.Se

lambda表达式Expression&lt;Func&lt;Person, bool&gt;&gt; 、Func&lt;Person, bool&gt;区别

前言: 自己通过lambda表达式的封装,将对应的表达式转成字符串的过程中,对lambda表达式有了新的认识 原因: 很多开发者对lambda表达式Expression<Func<Person, bool>> .Func<Person, bool>表示存在疑惑,现在就用代码举个简单列子 原代码: using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expres