4

.NET Framework 4.0 を使用しています。アクションのドキュメント ( http://msdn.microsoft.com/en-us/library/018hxwa8(v=vs.100).aspx ) を見ると、デリゲートとアクションを比較する次の例が示されています。

delegate void DisplayMessage(string message);

public class TestCustomDelegate
{
    public static void Main()
    {
        DisplayMessage messageTarget;
        ...
    }
}

と:

public class TestAction1
{
    public static void Main()
    {
        Action<string> messageTarget;
        ...
    }
}

しかし、デリゲートの代わりにアクションを使用してこれを作成するにはどうすればよいでしょうか?

delegate void DisplayMessage<T>(T message);

public class TestCustomDelegate
{
    public static void Main()
    {
        DisplayMessage<string> messageTarget;
        ...
    }
}

編集: messageTarget 宣言の型定義を忘れました。今追加しました。

4

2 に答える 2

4

デリゲートは とまったく同じですAction<T>が、名前が異なります。

同じように使えます。

于 2013-06-21T18:16:56.313 に答える
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

ラムダも使用できます:

Action<string> messageTarget = new Action<string>(s =>
                {
                    //do stuff with s                    
                    Console.WriteLine(s);
                });
messageTarget.Invoke("Testing");  //or use beginInvoke/endInvoke
于 2013-06-21T18:29:03.060 に答える