委托之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#中函数回调机制的实现基 ...
随机推荐
- 【C#】预处理指令的学习 条件编译
预处理指令,我的理解是,编译器在编译过程中所做的指令,能根据用户定义的条件选择性的编译代码. 比如在debug下要打印些信息,然而release之后,不能出现debug的信息,这个时候就能用预处理指令 ...
- 算法金 | 突破最强算法模型!!学会随机森林,你也能发表高水平SCI
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 就在去年下半年,如果你在 Google Scholar 上以 "Random ...
- Excel相关技巧
(1)如何实现EXCEL某个单元格满足条件整行变色? 链接:https://jingyan.baidu.com/article/75ab0bcba47c19d6864db2cf.html (2)获取表 ...
- Python实现字符串模糊匹配
在一个字符串中,有时需对其中某些内容进行模糊匹配以实现条件的判定,如在"你好,hello,world"中判断是否含有"llo".Python中通过re.se ...
- C# .NET 6 使用WorkFlow Core 创建工作审批流
1,背景 工作流思想在上世纪60年代就有人提出过:70年代就有人开始尝试,但是由于当时许多的限制,工作流一直没有成功的被实现:80年代才出现第一批成功的工作流系统:90年代工作流技术走向了第一个发展高 ...
- css制作骰子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- margin的用法 清除默认样式 display属性值 块状元素 内联元素 行内块元素
margin的用法: 1,margin是在元素的宽高以外的 2,作用:控制元素之间的位置关系 3,margin不能改变盒子本身大小的 4,单一一个方向设置margin值: margin-left ...
- INFINI Labs 产品更新 | Console 1.24.0 操作日志审计功能发布
INFINI Labs 产品又更新啦~,包括 Console,Gateway 1.24.0.本次各产品更新了很多亮点功能,如 Console 增加操作日志审计功能,优化数据探索字段统计,修复 Gate ...
- ASP.NET MVC 出现: Uncaught ReferenceError: $ is not defined
ASP.NET MVC 出现: Uncaught ReferenceError: $ is not defined 错误 将 _Layout.cshtml 中的三行代码,移动到 <head> ...
- 夜莺项目发布 v6.5.0 版本,暗黑菜单来了
大家好,夜莺项目发布 v6.5.0 版本,启用新 logo,菜单支持换肤,支持了暗黑版本的菜单,下一步会支持全站暗黑主题,敬请期待,下面是新 logo. 暗黑菜单 页面右上角点击用户名,在下拉框里会有 ...