世界焦点!C# 委托事件简介

using System;

/// <summary>


(资料图片仅供参考)

/// ---------------------委托步骤---------------------

/// 第一步:声明委托

/// 第二步:委托使用方法的实现

/// 第三步:委托的解释(将方法以变量的形式传递,且以方法的形式执行)--方法与委托建立联系

/// 注:

/// 委托链的概念(+=、-=,+=表示建立联系,-=表示委托作废)

/// 匿名函数:一次性调用(如需多次调用,则应提取)

/// 

/// ---------------------事件:可理解为一种特殊的功能受限的委托---------------------

/// 第一步:声明事件(eg:public static event DelegateSayHello EventSayHello;)

/// 第二步:订阅或取消事件(+=/-=)

/// 第三步:调用事件

/// </summary>

namespace DelegateDemo

{

/// <summary>

/// 无参无返回值委托

/// </summary>

public delegate void DelegateSayHello();

/// <summary>

/// 带参无返回值委托

/// </summary>

/// <param name="messageInfo">参数信息</param>

/// <returns></returns>

public delegate string DelegateSayMessage(string messageInfo);

/// <summary>

/// 带参无返回值委托

/// </summary>

/// <param name="messageInfo">参数信息</param>

public delegate void DelegateSayGoodBye(string messageInfo);

class Program

{

//声明事件

public static event DelegateSayMessage EventSayHello;

static void Main(string[] args)

{

string message = DelegateTest();

//Console.WriteLine(message);

//注册事件/订阅事件

EventSayHello += Program_EventSayMessage;

//调用事件

if (EventSayHello != null) Program_EventSayMessage("事件调用来一波");

Console.ReadLine();

}

private static string Program_EventSayMessage(string messageInfo)

{

Console.WriteLine($"{messageInfo}");

return messageInfo;

}

private static string DelegateTest()

{

//委托简单用法

DelegateSayHello say = SayHello;

say();

DelegateSayMessage mes = SayMessage;

string message = mes("带参带返回值");

//委托链用法

DelegateSayHello say1 = SayHello;

say += SayHello;

say -= SayHello;

//匿名函数用法

DelegateSayGoodBye nickMethod = delegate (string messageInfo)

{

Console.WriteLine($"{messageInfo}我是无参无返回值匿名函数");

};

nickMethod("nickMethod 匿名方法调用==");

DelegateSayMessage returnSay = delegate (string messageInfo)

{

string str = messageInfo + "有参有返回值匿名函数:";

Console.WriteLine(str);

return str;

};

returnSay("returnSay 匿名方法调用==");

//Lamda表达式

DelegateSayGoodBye lamda = (messageInfo) =>

{

Console.WriteLine($"{messageInfo }lamda用法来一波");

};

lamda("swg:");

return message;

}

private static void SayHello()

{

Console.WriteLine("hello delegate");

}

private static string SayMessage(string messageInfo)

{

string str = "SayMessage==" + messageInfo;

return str;

}

}

}

关键词: 无返回值 匿名函数 参数信息

推荐阅读

Copyright   2015-2022 纵横印刷网 版权所有  备案号:浙ICP备2022016517号-12   联系邮箱:51 46 76 11 3 @qq.com