委托,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         static void Main(string[] args)
13         {
14             //泛型委托
15             //Action :
16
17             //带一个参数的
18             Action<string> ac = DelegateTest;
19             ac("带一个参数");
20
21             //带两个参数
22             Action<int, int> action = DelegateTest;
23             action(1, 2);
24
25             Console.ReadKey();
26         }
27
28         static void DelegateTest(string s)
29         {
30             Console.WriteLine(s);
31         }
32         static void DelegateTest(int a ,int b)
33         {
34             Console.WriteLine(a+b);
35         }
36     }
37 }

  不带泛型,格式如下:
 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         static void Main(string[] args)
13         {
14             // 无参数无返回值的委托
15
16             Action action1 = DelegateTest;
17             action();
18
19             Console.ReadKey();
20         }
21
22         static void DelegateTest()
23         {
24             Console.WriteLine("无参的委托");
25         }
26     }
27 }

2.Func :

    有参数 有返回值的委托 (参数的最后一个为返回值)

 1 Func<int, int, int> objCall = ((a, b) => { return a * b; });
 2             Func<int, int, int> objCall1 = ((a, b) => { return a / b; });
 3             Action<int, int> ob = ((a, b) => { Console.WriteLine(a * b); });
 4             ob(5, 3);
 5
 6             //----------------------------------------------------//
 7             int result = objCall(5, 3);
 8             int result1 = objCall1(5, 3);
 9             System.Console.WriteLine("结果1为 {0},结果2为{1}", result, result1);
10
11
12
13             // Lambda 表达式
14             Func<int, bool> dele1 = n => n > 10;
15             // Lambda 语句
16             Func<int, bool> dele2 = (int n) => { return n > 10; };
17             Console.WriteLine(dele1(16));
18             Console.WriteLine(dele1(8));
19             Console.ReadKey();
时间: 2024-12-29 06:46:15

委托,C#本身的委托(Action Func)的相关文章

c# delegate action func predicate event 匿名函数 lambda

1.delegate 是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类. 与其它的类不同,delegate类能够拥有一个签名 (signature),并且它只能持有与它的签名相匹配的方法的引用. 它所实现的功能与C/C++中的函数指针十分相似.它允许你传递一个类A的方法m 给另一个类B的对象,使得类B的对象能够调用这个方法m.但与函数指针相比,delegate有许多函数指针不具备的优点: 首先,函数指针只能指向静态函 数,而delegate既可以引用静态函数,又可以引用非静态成员函

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 Fun

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

通过定义任务委托的方法处理 action

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace BZ.Web.QiYe.Handler { /// <summary> /// Handler1 的摘要说明 /// </summary> public class Handler1 : IHttpHandler { private delegate void task(); //定义任务委托

温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件

一.委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本的数据类型(或者没有参数),比如 public void HelloWorld() { Console.WriteLine("Hello World!"); } public void HelloWorld(string name) { Console.WriteLine("Hello ,{0}!", name); } 但是有些时候,我们希望把一

委托学习续:Action、Func和Predicate

我们先看一个上一章的委托的例子: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Test 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 new Program(); 14 15

winform总结2&gt; Action&lt;&gt; ,Action,func&lt;&gt;,委托相关的理解

1,他们是什么: Action 封装一个方法,该方法不具有参数并且不返回值. Action<> 封装一个方法,该方法具有最多16个参数并且不返回值. func<> 封装一个具有一个参数并返回 TResult 参数指定的类型值的方法.最多可以传递16个参数,并且可以有返回值,最后一个参数是返回值. 目前了解到的好像也只有委托是需要传递一个方法的,既然这里的三个方式都是封装一个方法,那么这种写法就肯定是可以用到给委托传递参数一类型的任务时用,想想刚开始学习委托的时候,要给他传递一个方法

系统自带的委托Action和Func

一.Action(没有返回值的委托,参数可有可无) 1.Action是无参无返回值的委托,用法如下:(非泛型Action) 1 //无参无返回值的Action 2 Action a = () => { Console.WriteLine("这是无参数无返回值的Action"); }; 3 a(); 输出:这是无参数无返回值的Action 2.Action<T>是有参数无返回值的委托,用法如下: 1 //有参数无返回值的 2 Action<string, int&

C# 委托 Action Func

Action<T> : 传递参数,只进不出,所以方法为void Func<in T, out Tv> : 传递参数,有进有出,所以传递的方法要return using System; using System.Collections.Generic; using System.Linq; namespace rooxml { public class main { public delegate void fucA(string s); public static void Mai