您的位置:首页 > 编程语言 > C#

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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: