委托之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#中函数回调机制的实现基 ...
随机推荐
- 2024-05-15:用go语言,考虑一个整数 k 和一个整数 x。 对于一个数字 num, 在其二进制表示中, 从最低有效位开始, 我们计算在 x,2x,3x 等位置处设定位的数量来确定其价值。
2024-05-15:用go语言,考虑一个整数 k 和一个整数 x. 对于一个数字 num, 在其二进制表示中, 从最低有效位开始, 我们计算在 x,2x,3x 等位置处设定位的数量来确定其价值. 举 ...
- flask-wtf和WTForms官网翻译详解
https://flask-wtf.readthedocs.io/en/stable/# https://wtforms.readthedocs.io/en/2.3.x/ 介绍: wtformflas ...
- Vue 3入门指南
title: Vue 3入门指南 date: 2024/5/23 19:37:34 updated: 2024/5/23 19:37:34 categories: 前端开发 tags: 框架对比 环境 ...
- zabbix笔记_004 监控Windows主机
zabbix监控Windows主机 zabbix for windows 安装包下载地址: https://www.zabbix.com/cn/download_agents#tab:34 下载zab ...
- java中SimpleDateFormat解析日期格式的问题
在日常写代码的过程中,我们经常要处理各种格式的日期,常见的日期格式有:"20240601","2024-06-01","2024-6-1". ...
- Your Post Title Here
VSCode 实时预览还需要执行 Markdown: Open Preview to the Side 命令来实现. 在命令窗口输入 Markdown: Open Preview to the Sid ...
- Lru在Rust中的实现, 源码解析
LRU(Least Recently Used)是一种常用的页面置换算法,其核心思想是选择最近最久未使用的页面予以淘汰. LRU算法原理 基本思想:LRU算法基于一个假设,即如果一个数据在最近一段时间 ...
- 算法学习笔记(39): 2-SAT
SAT 问题,也就是可满足性问题 Boolean Satisfiability Problem,是第一个被证明的 NPC 问题. 但是特殊的 2-SAT 我们可以通过图论的知识在线性复杂度内求解,构造 ...
- 童年神机小霸王(七) Mapper
首发公号:Rand_cs,求关注支持 Mapper mapper,这个概念来源于 memory mapping,又叫做 Memory Management Circuit,它是解决地址映射的一种电路, ...
- P7897
problem && blog 第一道正经的 Ynoi,特此写篇题解纪念一下. Algorithm 1 可以想到 \(O(nm)\) 的 DP. 我们定义 \(dp_u\) 为 \(u ...