Action<>和Func<>区别

Action<>和Func<>其实都是委托的【代理】简写形式。

简单的委托写法:

 1 //普通的委托
 2 public delegate void myDelegate(string str);
 3
 4 //Delegate委托调。
 5 myDelegate dDelegate = new myDelegate(SayHellow);
 6 dDelegate("Mr wang");
 7
 8 //测试方法
 9 public static void SayHellow(string name)
10 {
11      Console.WriteLine("Hello,"+name);
12      Console.ReadLine();
13 }

Action<>指定那些只能输入参数,没有返回值的委托。

 1 Action<string> action = SayHellow; //Action<string>中string为参数类型。
 2 action("ZhangSan");
 3
 4
 5 //测试方法
 6 public static void SayHellow(string name)
 7 {
 8             Console.WriteLine("Hello,"+name);
 9             Console.ReadLine();
10  }

Func<>使用方法和Action<>相似,区别是这个 有返回值。

1 Func<string,string> func=SayHello; //Func<>中参数前面都是方法所传参数类型,只有最后一个类型为委托返回 类型。
2 Console.WriteLine(func("ZhangSan"));
3
4
5 //测试方法。
6 public static string SayHello(string name)
7 {
8        return "Hello." + name;
9  }

时间: 2024-11-05 18:28:18

Action<>和Func<>区别的相关文章

委托之Action和Func区别

一.说明 一般我们定义委托都是有如下两步: public delegate void MyDelegate(string name);//定义委托 public MyDelegate myDelegate; //使用委托 但.Net也提供了定义好的委托,我们可以直接使用. 二.定义 System.Action 无返回值 Action: public delegate void Action (); Action< T >: public delegate void Action< T &

C#中Action和Func的区别

本文实例分析了C#中Action和Func的区别,有助于读者牢固掌握并对其准确使用.具体分析如下: 先来看下面这段代码: //测试使用的公共值 int num = 10; //测试Func委托 Func<int, int> f; f = (int tempf) => { return tempf + 1; }; Response.Write(f(num).ToString()+"<br />"); //调用f委托,并打印相应的值! //测试Action委托

C# 中的delegate、event、Action、Func

缘起: 之前一直很纠结C#中(delegate.event.Action.Func)的用法,这么多方法,感觉每次使用的时候好像都没啥区别,老感觉微软有多此一举之嫌,不过今天花了点时间好好研究了下,才发现他们实质上的区别. 解惑: 我发现,这四种类型中不管哪种,其实都属于委托,只是展现的形式不同而已,无论哪种,其实都可以采用delegate实现,为什么会衍生出其他三种形式,我猜是为了方便开发者使用,因为我们会发现定义一个delegate其实还是蛮费劲的,至少会比其他三种多一条定义语句,使用起来也不

C#高级功能(三)Action、Func,Tuple

Action和Func泛型委托实际上就是一个.NET Framework预定义的委托,3.5引入的特性.基本涵盖了所有常用的委托,所以一般不用用户重新声明. Action系列泛型委托,是没有返回参数的委托,最多可以有16参数,也可以没有参数:Func系列的委托是有返回值的委托,最多可以有16个参数: 元组是C# 4.0引入的一个新特性,编写的时候需要基于.NET Framework 4.0或者更高版本.元组使用泛型来简化一个类的定义. 提供用于创造元组对象的静态方法.最多可以提供创建新的 8 元

EXPLAINING WHAT ACTION AND FUNC ARE

http://simpleprogrammer.com/2010/09/24/explaining-what-action-and-func-are/ Explaining What Action And Func Are In C#, Action and Func are extremely useful tools for reducing duplication in code and decreasing coupling. It is a shame that many develo

C#action和func的使用

以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发现确实代码简洁了不少.这两种方式我们也可以去实践的过程去慢慢运用. 先说一下委托: 模拟一下场景:小明最近学习情绪高涨,以前买的书已经满足不了欲望,打算去买本(一个程序员的自我修养).可是呢以前总是跑书厂买,nm,太远了扛不住,就去跑去附近书店去买,小明去给钱就弄了一本书回来,这个过程就是委托.开始

Html.Partial,Html.RenderPartial Html.Action,Html.RenderAction区别

@Html.Partial,@Html.RenderPartial      这两者的共同点都是在视图中去调用另外一个视图,区别是   Html.Partial 有返回值 ( MvcHtmlString ),使用的时候  可以用一个变量存储这个返回值,或者使用 @直接进行输出. 而Html.RenderPartial  的返回值是 Void ,他的内部会自动帮我们 Response输出内容,所以无法用变量进行存储, 使用的时候 需要 @{ Html.RenderPartial() ;} 来调用

使用Action、Func和Lambda表达式

在.NET在,我们经常使用委托,委托的作用不必多说,在.NET 2.0之前,我们在使用委托之前,得自定义一个委托类型,再使用这个自定义的委托类型定义一个委托字段或变量..NET 2.0给我们带来了Action.Func两个泛型委托,.NET3.0给我们带来了Lambda,这一切使得委托的定义和使用变得简单起来.下面的例子中的委托都使用了Lambda表达式. 一.Action系列的泛型委托 Action系列的委托定义的是没有返回值(返回值为void)的委托.它有多个版本包括没有输入参数,1个输入参

C#之Action和Func的用法

以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发现确实代码简洁了不少.这两种方式我们也可以去实践的过程去慢慢运用. 先说一下委托: 模拟一下场景:小明最近学习情绪高涨,以前买的书已经满足不了欲望,打算去买本(一个程序员的自我修养).可是呢以前总是跑书厂买,nm,太远了扛不住,就去跑去附近书店去买,小明去给钱就弄了一本书回来,这个过程就是委托.开始