委托之Action与Func
1 例程代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows; namespace 委托之Action与Func
{
class Program
{
static void Main(string[] args)
{ Console.WriteLine("【1】演示Action 委托:");
var actDele = new Action(TestMethods.SelfIntroduce);
actDele += TestMethods.SayHi;
actDele.Invoke();//调用委托 ShowTool.PrintDelimiter(50);
Console.WriteLine("【2.1】演示Func<int,int,int>委托:");
var func1 = new Func<int, int, int>(TestMethods.Add2Num);
Console.WriteLine("请输入第一个数:");
int a = ShowTool.GetNumInit();
Console.WriteLine("请输入第二个数:");
int b = ShowTool.GetNumInit();
Console.WriteLine(func1.Invoke(a, b)); ShowTool.PrintDelimiter(50);
Console.WriteLine("【2.2】演示Func<double,double,double>委托:");
var func2 = new Func<double,double,double>(TestMethods.Multiple2Num);
Console.WriteLine("请输入第一个数:");
double x = ShowTool.GetNumDouble();
Console.WriteLine("请输入第二个数:");
double y = ShowTool.GetNumDouble();
Console.WriteLine(func2.Invoke(x, y));
Console.ReadKey(); }
}
class TestMethods
{
internal static void SayHi()
{
Console.WriteLine("Hello,Dell Mao");
}
public static void SelfIntroduce()
{
Console.WriteLine("Hi,My name is Dell Mao!");
}
public static int Add2Num(int a, int b)
{
return a + b;
} public static double Multiple2Num(double a, double b)
{
return a * b;
}
}
class ShowTool
{
public static void PrintDelimiter(int lenght)//打印一个分隔符
{
if (lenght < 8)
{
lenght = 8;
}
for (int i = 0; i < lenght; i++)
{
Console.Write("=");
}
Console.WriteLine();
}
public static int GetNumInit()
{
int a = 0;
try
{
a = Convert.ToInt32(Console.ReadLine());
return a;
}
catch (Exception)
{
MessageBox.Show("您输入的数据格式有误,将使用默认值0。");
return a;
}
}
public static double GetNumDouble()
{
double a = 0;
try
{
a = Convert.ToDouble(Console.ReadLine());
return a;
}
catch (Exception)
{
MessageBox.Show("您输入的数据格式有误,将使用默认值-999。");
return a;
}
}
}
}
2 运行结果:

委托之Action与Func的更多相关文章
- C#系统委托之Action And Func
Action Action<T> Func Func<T> Action:封装一个方法,该方法不具有参数并且不返回值 public delegate void Action() ...
- 浅析C#之委托、Action、Func
一.委托 1.1 委托的定义 delegate(委托)是一种可用于封装命名方法或匿名方法的引用类型, 委托类似于 C++ 中的函数指针: .Net通过委托来提供回调函数机制. 声明一个委托类型 int ...
- [C#] 委托之Action和Func区别
一.说明 一般我们定义委托都是有如下两步: public delegate void MyDelegate(string name);//定义委托 public MyDelegate myDelega ...
- 委托、Action、Func使用
参考 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syste ...
- 事件,委托,action与func文章不错的
https://www.cnblogs.com/yinqixin/p/5056307.html https://www.cnblogs.com/BLoodMaster/archive/2010/07/ ...
- C#中匿名函数、委托delegate和Action、Func、Expression、还有Lambda的关系和区别
以前一直迷迷糊糊的,现在总算搞明白. Lambda表达式 Lamda表达式基本写法是()=>{ };Lambda和方法一样都可以传入参数和拥有返回值.(int x)=>{return x; ...
- C#基础知识六之委托(delegate、Action、Func、predicate)
1. 什么是委托 官方解释 委托是定义方法签名的类型,当实例化委托时,您可以将其实例化与任何具有兼容签名的方法想关联,可以通过委托实例调用方法. 个人理解 委托通俗一点说就是把一件事情交给别人来帮助完 ...
- C#委托(Action、Func、predicate)
Predicate 泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素. public delegate boo ...
- Action<>和Func<> 委托【代理】
C#中的Action<>和Func<> 其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的 ...
- .NET中的Action及Func泛型委托
委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象中,并且多个委托可以合并为一个委托,委托对象则可以像普通对象一样被存储.传递,之后在任何时刻进行调用,因此,C#中函数回调机制的实现基 ...
随机推荐
- Angular的管道
Angular的管道可以看作成是一个数据格式化展示的工具.管道可以将数据格式化显示,而不改变源数据.获取数据可能简单到创建一个局部变量就行,也可能复杂到从WebSocket中获取数据流.一旦取到数据, ...
- pageOffice插件 springboot实现服务器上Word文档在线打开编辑保存
需求: 在oa系统上,想实现在线,服务器上doc,docx文档,在web打开,编辑.编辑后,可以再同步保存到服务器端. 开发环境: java springboot,thymeleaf 服务器环境: 无 ...
- 一次nginx文件打开数的问题排查处理
现象:nginx域名配置合并之后,发现consul-template无法完成nginx重载,然后发现需要重启nginx,才能让配置生效. 注意:下次哪个服务有报错,就看重启时所有日志输出,各种情况日志 ...
- docker之企业级镜像仓库Harbor
Harbor概述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的 企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管 ...
- WPF没修改代码出现InitializeComponent报错的解决办法
问题不在于我们做错了什么,之前还好好的,我们什么都没做,就报错了.这完全不是我们的问题. 我的建议是,直接做绝一点,删除obj和debug文件夹,让他自己重新生成一次
- Composer 的下载与安装
一,Composer 的下载与安装 官网下载:https://getcomposer.org/download/ 打开 penssl的注释,在 D:\wamp\php7230\php.ini 文 ...
- MFC之ListControl选中行删除
if (m_list.GetSelectedCount() > 0) { POSITION pos= m_list.GetFirstSelectedItemPosition(); while ( ...
- 微信开发者工具拉取gitlab远程代码报Pull failed原因分析:
可能出现的原因: 本地主机上没有安装node node下载地址: 1 https://nodejs.org/zh-cn/download/ 没有保存gitlab的用户名和密码
- Vue cli传递数据
Nav组件和Forecast组件都是Home组件的子组件. (1)子组件传递数据给父组件 在子组件中,通过this.$emit('自定义事件名', 参数1,参数2,...)来调用父组件中定义的事件. ...
- gitlab私有仓库搭建
1.Gitlab介绍 我们了解了git是以个人为中心,但是人人都得数据交互呀..python程序员每天都忙着进行py交易 交互数据的方式 使用github或者码云等公有代码仓库,托管代码的地方,谁都可 ...