C#委托事件
来源:互联网 发布:unity3d模型百度云 编辑:程序博客网 时间:2024/06/15 05:03
示例1:
1、定义类,人,英国人,中国人
public class people
{public delegate void delGreate(string msg,string opera);
public event delGreate eGreate;
public void Greate(string msg,string opera)
{
if(eGreate!=null)
{
eGreate(msg,opera);
}
}
}
public class englishPeople
{
people pe;
public englishPeople(people p)
{
pe = p;
pe.eGreate += GreateEng;
}
public void GreateEng(string msg, string opera)
{
if(opera.Contains("english"))
{
Console.WriteLine("英语问候:" + msg);
}
}
}
public class chinaPeople
{
people pe;
public chinaPeople(people p)
{
pe = p;
pe.eGreate += GreateChina;
}
public void GreateChina(string msg,string opera)
{
if(opera.Contains("china"))
{
Console.WriteLine("汉语问候:" + msg);
}
}
}
2、调用
people peo = new people();
englishPeople eng = new englishPeople(peo);
chinaPeople chi = new chinaPeople(peo);
peo.Greate("张三","english");
Console.ReadKey();
示例2:
Action<T> 委托
using
System;
using
System.Windows.Forms;
delegate
void
DisplayMessage(
string
message);
public
class
TestCustomDelegate
{
public
static
void
Main()
{
DisplayMessage messageTarget;
if
(Environment.GetCommandLineArgs().Length > 1)
messageTarget = ShowWindowsMessage;
else
messageTarget = Console.WriteLine;
messageTarget(
"Hello, World!"
);
}
private
static
void
ShowWindowsMessage(
string
message)
{
MessageBox.Show(message);
}
}
以下简化了此代码,它所用的方法是实例化 Action<T> 委托,而不是显式定义一个新委托并将命名方法分配给该委托。
using
System;
using
System.Windows.Forms;
public
class
TestAction1
{
public
static
void
Main()
{
Action<
string
> messageTarget;
if
(Environment.GetCommandLineArgs().Length > 1)
messageTarget = ShowWindowsMessage;
else
messageTarget = Console.WriteLine;
messageTarget(
"Hello, World!"
);
}
private
static
void
ShowWindowsMessage(
string
message)
{
MessageBox.Show(message);
}
}
using
System;
using
System.Windows.Forms;
public
class
TestLambdaExpression
{
public
static
void
Main()
{
Action<
string
> messageTarget;
if
(Environment.GetCommandLineArgs().Length > 1)
messageTarget = a => ShowWindowsMessage(s);
else
messageTarget = a => Console.WriteLine(s);
messageTarget(
"Hello, World!"
);
}
private
static
void
ShowWindowsMessage(
string
message)
{
MessageBox.Show(message);
}
}
阅读全文
0 0
- C#委托及事件委托
- c# 委托和委托事件
- C# 事件 委托 教程
- C# 事件 委托 教程
- C#委托及事件
- c# 委托与事件
- C# 委托和事件
- C#委托与事件
- C#委托,事件
- C#委托事件
- C#委托及事件
- c# 委托 和 事件
- C#委托,事件
- C#委托及事件
- 关于 C# 委托、事件
- C# 委托与事件
- C#委托事件
- c#委托、事件理解
- jquery校验表单
- thymeleaf 模板
- java删除内容中html语言
- 课程设计 学生成绩查询
- java基本类型的初始化值,含代码
- C#委托事件
- OpenCV直接或通过NVR打开海康威视IP摄像头
- js跨域
- 微服务下的网关与容错
- 阿里云Ubuntu16.04+apache2配置阿里云免费CA证书记录
- 什么是文档标准流
- 剑指Offer-9:用两个栈实现队列
- 实用Android UI工具
- 设备树那些事