我正在使用.NET Framework 4.0。查看Action(http://msdn.microsoft.com/en-us/library/018hxwa8(v=vs.100).aspx)的文档,他们给出了将委托与Action进行比较的示例:
delegate void DisplayMessage(string message);
public class TestCustomDelegate
{
public static void Main()
{
DisplayMessage messageTarget;
...
}
}
和
public class TestAction1
{
public static void Main()
{
Action<string> messageTarget;
...
}
}
但是,如何使用Action而不是委托来创建它?
delegate void DisplayMessage<T>(T message);
public class TestCustomDelegate
{
public static void Main()
{
DisplayMessage<string> messageTarget;
...
}
}
编辑:我忘记了messageTarget声明中的类型定义。现在添加它。
答案 0 :(得分:4)
您的委托与Action<T>
完全相同,但名称不同。
你可以用同样的方式使用它。
答案 1 :(得分:1)
对于现有方法(如DisplayMessage)
public void DisplayMessage<T>(T message)
{
//do stuff with s
if (message is string)
{
Console.WriteLine(message);
}
}
Action<string> messageTarget = new Action<string>(DisplayMessage);
messageTarget.Invoke("Testing"); //or use beginInvoke/endInvoke
也可以使用lambda:
Action<string> messageTarget = new Action<string>(s =>
{
//do stuff with s
Console.WriteLine(s);
});
messageTarget.Invoke("Testing"); //or use beginInvoke/endInvoke