眼泪无法洗去痛苦,但岁月可以抹去一切。

Ritchie里其

园龄:2年6个月粉丝:4关注:7

📂C#
🔖委托
2024-11-28 17:12阅读: 9评论: 0推荐: 0

c#中的委托

委托:delegate

本质就是个密封类,与类平级
用于封装,解耦

声明语法

// 使用 delegate 关键字声明一个委托
delegate void Func(int x);

简单使用

eg.一个计算器

namespace ConsoleApp;
class Program
{
/**
* 声明委托
*/
public delegate double CalculateFunction(double x, double y);
/**
* 加法
*/
static double Add(double x, double y)
{
return x + y;
}
/**
* 减法
*/
static double Subtract(double x, double y)
{
return x - y;
}
// Test方法的参数就是一个方法(委托)
static void Test(CalculateFunction calculateFunction)
{
Console.Write("请输入x的值:");
double x = Convert.ToDouble(Console.ReadLine());
Console.Write("请输入y的值:");
double y = Convert.ToDouble(Console.ReadLine());
double result = calculateFunction(x, y);
Console.WriteLine($"x与y委托计算的结果>>>{result}");
}
static void Main(string[] args)
{
// 写法一:
// CalculateFunction cal = new CalculateFunction(Add);
// double d = cal(3, 4);
// 写法二:
// Test(new CalculateFunction(Add));
// 写法三:
Test(Add);
Test(Subtract);
Console.ReadKey();
}
}

常用方法

对委托最常使用的方法是 Invoke()BeginInvoke() / EndInvoke()
Invoke() 会调用已附加到特定委托实例的所有方法。
eg.简单使用 +=、-=、Invoke()

namespace ConsoleApp;
class Program
{
public delegate double CalculateFunction(double x, double y);
public static CalculateFunction calFunc;
static double Add(double x, double y) => x + y;
static double Test2(double x, double y)
{
Console.WriteLine($"委托实现 Add >_<");
return Add(x, y);
}
static void Main(string[] args)
{
// 实例化委托(订阅)
calFunc += Test2;
// 取消订阅
// calFunc -= Test2;
// 调用委托
calFunc?.Invoke(11, 22);
}
}

与接口对比

接口实现了类的依赖注入

委托实现了方法的依赖注入

本文作者:Ritchie

本文链接:https://www.cnblogs.com/wang-zeyu/p/18574667

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Ritchie里其  阅读(9)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
✨欢迎你~🍻
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 遥か Aimer
遥か - Aimer
00:00 / 00:00
An audio error has occurred.

作词 : aimerrhythm/田中ユウスケ

作曲 : 田中ユウスケ

编曲 : 玉井健二/百田留衣

海岸線の雨に ちらばった君の影

思い出が交差する 海辺の街

君はあの日のまま いまも夢を見てた

君はあの日のまま いまも夢を見てた

遥か記憶の空 2人照らす光

遥か記憶の空 2人照らす光

膝までの浅瀬で 見つけた星

君まで届くなんてさ ありえないような

浅い眠りの中で 深い夢から覚めて

浅い眠りの中で 深い夢から覚めて

裸足のまま駆けてく まばゆい星

君はあの日のまま どんな夢を見てた?

君はあの日のまま どんな夢を見てた?

遥か記憶の空 2人照らす光

遥か記憶の空 2人照らす光

いつまでもこうして 笑っててほしい

夜空に舞い上がる 幾千の花びら

でたらめな誓いで 生きてく日々

君から届くなんてさ ありえないような