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;
}
}
}
}

运行结果:

委托之Action与Func的更多相关文章

  1. C#系统委托之Action And Func

    Action Action<T> Func Func<T> Action:封装一个方法,该方法不具有参数并且不返回值 public delegate void Action() ...

  2. 浅析C#之委托、Action、Func

    一.委托 1.1 委托的定义 delegate(委托)是一种可用于封装命名方法或匿名方法的引用类型, 委托类似于 C++ 中的函数指针: .Net通过委托来提供回调函数机制. 声明一个委托类型 int ...

  3. [C#] 委托之Action和Func区别

    一.说明 一般我们定义委托都是有如下两步: public delegate void MyDelegate(string name);//定义委托 public MyDelegate myDelega ...

  4. 委托、Action、Func使用

    参考 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syste ...

  5. 事件,委托,action与func文章不错的

    https://www.cnblogs.com/yinqixin/p/5056307.html https://www.cnblogs.com/BLoodMaster/archive/2010/07/ ...

  6. C#中匿名函数、委托delegate和Action、Func、Expression、还有Lambda的关系和区别

    以前一直迷迷糊糊的,现在总算搞明白. Lambda表达式 Lamda表达式基本写法是()=>{ };Lambda和方法一样都可以传入参数和拥有返回值.(int x)=>{return x; ...

  7. C#基础知识六之委托(delegate、Action、Func、predicate)

    1. 什么是委托 官方解释 委托是定义方法签名的类型,当实例化委托时,您可以将其实例化与任何具有兼容签名的方法想关联,可以通过委托实例调用方法. 个人理解 委托通俗一点说就是把一件事情交给别人来帮助完 ...

  8. C#委托(Action、Func、predicate)

    Predicate 泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素. public delegate boo ...

  9. Action<>和Func<> 委托【代理】

    C#中的Action<>和Func<> 其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的 ...

  10. .NET中的Action及Func泛型委托

    委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象中,并且多个委托可以合并为一个委托,委托对象则可以像普通对象一样被存储.传递,之后在任何时刻进行调用,因此,C#中函数回调机制的实现基 ...

随机推荐

  1. 用【Makefile】或【Cmake】编译【C/Fortran】程序文件

    一.vimrc文件设置 set tabstop=4 "tab空格4 set expandtab "将tab扩展成空格 set softtabstop=4 "表示在编辑模式 ...

  2. 网络广告代理商是如何通过Cookie收集用户信息的

    更多博文请关注:https://blog.bigcoder.cn 不知道大家有没有这样的经历,我在某宝上搜索一个商品,然后再打开其它网站,它会非常"智能"的给我推荐同一商品. 这样 ...

  3. Servlet转发与重定向的资源路径问题解析

    一. 问题引入 转发和重定向可以说是Servlet中最重要的知识点也不为过,因为它决定着整个向Servlet体系中,执行流程的问题.      转发: request.getRequestDispat ...

  4. win11通过注册表禁用鼠标右键

    本经验分为5个步骤,详情如下. 工具/原料 华硕K5 win11专业版21H2 注册表22000.556 方法/步骤   同时按下"win"+"R"键,打开运行 ...

  5. 开发视频会议系统:使用GPU解码渲染视频

    现在,使用视频会议系统远程协同办公.沟通交流,已经非常普遍了.如果我们要开发自己的视频会议系统,那么,GPU解码渲染技术是不可缺少的. 在视频会议系统中,经常需要同时观看会议中多个参会人员的视频图像, ...

  6. String Record

    T1. P5840 算法:ACAM+BIT+树链剖分 自然地,我们会对 \(s_i\) 建 ACAM,然后建出一颗 fail 树. 此时我们考虑集合内加入一个新的字符串.每一个匹配到的点我们都会给从这 ...

  7. Easysearch 跨集群复制实战

    在之前的文章中,有通过网关实现容灾的案例.今天给大家介绍 Easysearch 的跨集群复制功能.该功能可在集群之间复制数据,应用场景包括但不限于以下举例: 灾备同步:将数据同步到灾备中心,灾备中心可 ...

  8. 手摸手教你把Ingress Nginx集成进Skywalking

    背景 在微服务大行其道的今天,如何观测众多微服务.快速理清服务间的依赖.如何对服务之间的调用性能进行衡量,成了摆在大家面前的难题.对此,Skywalking应运而生,它是托管在 Apache 基金会下 ...

  9. Feign的客户端注解@EnableFeignClients,解决No qualifying bean of type 'xx.xx.类' available注入报错

    //如果使用Feign的客户端,请放开下列注释@EnableFeignClientsNo qualifying bean of type 'xx.xx.类' available //需要添加扫描的路径 ...

  10. HBCK2修复hbase2的常见场景

    上一文章已经把HBCK2 怎么在小于hbase2.0.3版本的编译与用法介绍了,解决主要场景 查看hbase存在的问题 一.使用hbase hbck命令 hbase hbck命令是对hbase的元数据 ...