我们习惯把数据或者对像作为参数传递给方法,比如: int i = int.Parse("99");
int i = int.Parse("99");
如果我们把方法作为参数传递给方法,这就需要用到委托了
namespace delegate_test_01
{
class Program
{
//我们习惯把数据或者对像作为参数传递给方法,
//比如: int i = int.Parse("99");
//如果我们把方法作为参数传递给方法,这就需要用到委托了
public delegate void toSometing(int number);
//C#中委托的参数和返回类型,都要和你要具体委托的方法要一致
public static void PrintNum(int number) //预计要被传递的方法
{
Console.WriteLine($"PrintNumber:{number}");
}
public static void SquareFunction(int number) // print数字的平方
{
Console.WriteLine($"SquareFunction:{Math.Pow(number, 2)}");
}
public static void RadicalFunction(int number)// print数字开根号
{
Console.WriteLine($"RadicalFunction:{Math.Sqrt(number)}");
}
static void Main(string[] args)
{
//字面上理解委托,就像是A委托B去办一件事情一样
// WriteSometing 请 PrintNumber 处理事情
toSometing delegateTestA = new toSometing(PrintNum);//传统写法
delegateTestA += RadicalFunction;
delegateTestA += PrintNum;
delegateTestA += SquareFunction;
delegateTestA(25);
Console.WriteLine("====以下另一个委任====");
toSometing b = PrintNum; //语法糖
b(88);
Console.WriteLine("按任意键结束....");
Console.ReadKey(); //可按任意键结束画面
}
}
}
结果
PrintNumber:25
RadicalFunction:5
PrintNumber:25
SquareFunction:625
====以下另一个委任====
PrintNumber:88
按任意键结束....
实际应用的情境 教学 引用高手文章
https://eric0806.blogspot.com/2015/01/dotnet-delegate-usage.html
delegate 多播委托
委托的多播(Multicasting of a Delegate)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//delegate int NumberChanger(int n);
namespace multicasting1
{
//delegate int NumberChanger(int n);
class Program
{
delegate int NumberChanger(int n);
static int num = 10;
public static int AddNum(int p)
{
num += p;
return num;
}
public static int MultNum(int q)
{
num *= q;
return num;
}
public static int getNum()
{
return num;
}
static void Main(string[] args)
{
NumberChanger nc; //nc=5
NumberChanger nc1 = new NumberChanger(AddNum);
//宣告的委派 有一个int参数5 这参数会送进 AddNum 方法当参数使用 num = num+5; 10+5
NumberChanger nc2 = new NumberChanger(MultNum);
//宣告的委派 有一个int参数5 这参数会送进 MultNum 方法当参数使用15*5
nc = nc1;
nc += nc2;
nc(5);
//使用同一个参数5 委派串了两个方法 两个方法参数都是5
//num的值随着方法 一直被更改值 一开始是num=10
//进了第一个方法 num=15 进了第二个方法 num=75
Console.WriteLine("Value of Num: {0}", getNum());
Console.ReadKey();
}
}
}
今天来介绍一个 Solidity 的另一个特别的东西 libraries。 下面来看看 librar...
快速产生 Angular 元件 要在 Angular 专案中快速产生元件,首先要先打开 VS Cod...
前言 在连假结束的第一个上班上课日,总是特别让人没有动力出门。但笔者始终相信只要吃到一份好吃的早餐,...
磁力/引力模拟 弹力、磁力和引力其实本质上很接近。 之所以说相近,是因为他们都是一种长距离作用力。 ...
[How to Hire a Hacker Near Me] ( https://hackeronr...