C# 委托事件
2015-07-27 12:04
288 查看
Action<T>委托 Environment.GetCommandLineArgs().Length返回包含当前进程的命令行参数的字符串数组
显示声明一个委托
delegate
void DisplayMessage(string message);
class
Program
{
static
void Main(string[] args)
{
DisplayMessage messageTarget;
//Action<string> messageTarget;
if (Environment.GetCommandLineArgs().Length > 1)
messageTarget =ShowWindowsMessage;
else
messageTarget =
Console.WriteLine;
messageTarget("Hello,World");
}
private
static void ShowWindowsMessage(string message)
{
Console.WriteLine("XXXXXX");
}
}
使用Action<T>
class
Program
{
static
void Main(string[] args)
{
Action<string> messageTarget;
if (Environment.GetCommandLineArgs().Length > 1)
messageTarget =ShowWindowsMessage;
else
messageTarget =
Console.WriteLine;
messageTarget("Hello,World");
}
private
static void ShowWindowsMessage(string message)
{
Console.WriteLine("XXXXXX");
}
}
Action<T>与匿名方法一起使用
class
Program
{
static
void Main(string[] args)
{
Action<string> messageTarget;
if (Environment.GetCommandLineArgs().Length > 1)
//messageTarget =ShowWindowsMessage;
messageTarget = delegate(string s) { ShowWindowsMessage(s); };
else
messageTarget = delegate(string s) {
Console.WriteLine(s); };
messageTarget("Hello,World");
}
private
static void ShowWindowsMessage(string message)
{
Console.WriteLine("XXXXXX");
}
}
将lambda表达式分配给Action<T>委托实例
class
Program
{
static
void Main(string[] args)
{
Action<string> messageTarget;
if (Environment.GetCommandLineArgs().Length > 1)
messageTarget = s=>
Console.WriteLine(s);
else
messageTarget = s=> ShowWindowsMessage(s);
messageTarget("Hello,World");
}
private
static void ShowWindowsMessage(string message)
{
Console.WriteLine("XXXXXX");
}
}
委托事件应用
public enum
eMessage
{
GameStart,
PlayerStart,
GamePause,
GameOver
}
public
static class
GameMessage
{
public
static event System.Action<eMessage> onMessage;
public
static void PostMessage(eMessage message)
{
if(onMessage!=null)
onMessage(message);
}
public
static void Clear()
{
onMessage = null;
}
}
class
Program
{
static
void Main(string[] args)
{
GameInit();
GameMessage.PostMessage(eMessage.GameStart);
}
public
static void OnMessage(eMessage message)
{
switch (message)
{
case
eMessage.GameStart:
Console.WriteLine("GameStart");
break;
case
eMessage.PlayerStart:
Console.WriteLine("PlayerStart");
break;
case
eMessage.GamePause:
Console.WriteLine("GamePause");
break;
case
eMessage.GameOver:
Console.WriteLine("GameOver");
break;
}
}
public
static void GameInit()
{
GameMessage.onMessage += OnMessage;
}
}
显示声明一个委托
delegate
void DisplayMessage(string message);
class
Program
{
static
void Main(string[] args)
{
DisplayMessage messageTarget;
//Action<string> messageTarget;
if (Environment.GetCommandLineArgs().Length > 1)
messageTarget =ShowWindowsMessage;
else
messageTarget =
Console.WriteLine;
messageTarget("Hello,World");
}
private
static void ShowWindowsMessage(string message)
{
Console.WriteLine("XXXXXX");
}
}
使用Action<T>
class
Program
{
static
void Main(string[] args)
{
Action<string> messageTarget;
if (Environment.GetCommandLineArgs().Length > 1)
messageTarget =ShowWindowsMessage;
else
messageTarget =
Console.WriteLine;
messageTarget("Hello,World");
}
private
static void ShowWindowsMessage(string message)
{
Console.WriteLine("XXXXXX");
}
}
Action<T>与匿名方法一起使用
class
Program
{
static
void Main(string[] args)
{
Action<string> messageTarget;
if (Environment.GetCommandLineArgs().Length > 1)
//messageTarget =ShowWindowsMessage;
messageTarget = delegate(string s) { ShowWindowsMessage(s); };
else
messageTarget = delegate(string s) {
Console.WriteLine(s); };
messageTarget("Hello,World");
}
private
static void ShowWindowsMessage(string message)
{
Console.WriteLine("XXXXXX");
}
}
将lambda表达式分配给Action<T>委托实例
class
Program
{
static
void Main(string[] args)
{
Action<string> messageTarget;
if (Environment.GetCommandLineArgs().Length > 1)
messageTarget = s=>
Console.WriteLine(s);
else
messageTarget = s=> ShowWindowsMessage(s);
messageTarget("Hello,World");
}
private
static void ShowWindowsMessage(string message)
{
Console.WriteLine("XXXXXX");
}
}
委托事件应用
public enum
eMessage
{
GameStart,
PlayerStart,
GamePause,
GameOver
}
public
static class
GameMessage
{
public
static event System.Action<eMessage> onMessage;
public
static void PostMessage(eMessage message)
{
if(onMessage!=null)
onMessage(message);
}
public
static void Clear()
{
onMessage = null;
}
}
class
Program
{
static
void Main(string[] args)
{
GameInit();
GameMessage.PostMessage(eMessage.GameStart);
}
public
static void OnMessage(eMessage message)
{
switch (message)
{
case
eMessage.GameStart:
Console.WriteLine("GameStart");
break;
case
eMessage.PlayerStart:
Console.WriteLine("PlayerStart");
break;
case
eMessage.GamePause:
Console.WriteLine("GamePause");
break;
case
eMessage.GameOver:
Console.WriteLine("GameOver");
break;
}
}
public
static void GameInit()
{
GameMessage.onMessage += OnMessage;
}
}
相关文章推荐
- C#:简单线程样例
- C# 中的委托和事件
- C#读写操作Excel文件,Excel进程资源回收代码
- C#全角和半角转换
- C#实现保存文件时重名自动生成新文件的方法
- C#中的委托的简单使用
- C# 十进制和十六进制转换
- C#知识点总结系列:1、C#中Hashtable、Dictionary详解以及写入和读取对比
- C# 给picturebox添加滚动条
- C# String与string的区别
- C#高级编程五十六天----可观察的集合ObservableCollection
- C# NET DataTable转Excel 并 下载
- .Net常见问题之C#中的委托
- 两小时搞定C#版超级战舰游戏
- 文本文件打印类库(C#)
- c# mvc flash上传
- C# 对于时间的相关问题
- C# 桌面创建快捷键方式
- 【C#】WaitHandle、EventWaitHandle、ManualResetEvent和AutoResetEvent线程同步类
- C#高级编程五十五天----HashSet和SortedSet