Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
0 von 1 fanden dies hilfreich - Dieses Thema bewerten.

Action-Delegat

Kapselt eine Methode, die über keine Parameter verfügt und keinen Wert zurückgibt.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)
public delegate void Action()

Sie können diesen Delegaten verwenden, um eine Methode als Parameter zu übergeben, ohne explizit einen benutzerdefinierten Delegaten zu deklarieren. Die gekapselte Methode muss der Methodensignatur entsprechen, die von diesem Delegaten definiert wird. Dies bedeutet, dass die gekapselte Methode über keine Parameter und keinen Rückgabewert verfügen darf. (In C# muss die Methode void zurückgeben. In Visual Basic muss sie durch das SubEnd Sub-Konstrukt definiert werden. Es kann auch eine Methode verwendet werden, die einen Wert zurückgibt, der ignoriert wird.) Normalerweise wird eine solche Methode verwendet, um eine Operation auszuführen.

Hinweis Hinweis

Um auf eine Methode zu verweisen, die über 10 Parameter verfügt und einen Wert zurückgibt, verwenden Sie stattdessen den generischen Func<TResult>-Delegaten.

Wenn Sie den Action-Delegaten verwenden, müssen Sie nicht explizit einen Delegaten definieren, der eine parameterlose Prozedur kapselt. Der folgende Code deklariert beispielsweise explizit einen Delegaten mit dem Namen ShowValue und weist der Delegatinstanz einen Verweis auf die Name.DisplayToWindow-Instanzmethode zu.


using System;
using System.Windows.Forms;

public delegate void ShowValue();

public class Name
{
   private string instanceName;

   public Name(string name)
   {
      this.instanceName = name;
   }

   public void DisplayToConsole()
   {
      Console.WriteLine(this.instanceName);
   }

   public void DisplayToWindow()
   {
      MessageBox.Show(this.instanceName);
   }
}

public class testTestDelegate
{
   public static void Main()
   {
      Name testName = new Name("Koani");
      ShowValue showMethod = testName.DisplayToWindow;
      showMethod();
   }
}


Im folgenden Beispiel wird dieser Code vereinfacht, indem der Action-Delegat instanziiert wird und nicht, indem ein neuer Delegat explizit definiert und diesem eine benannte Methode zugewiesen wird.


using System;
using System.Windows.Forms;

public class Name
{
   private string instanceName;

   public Name(string name)
   {
      this.instanceName = name;
   }

   public void DisplayToConsole()
   {
      Console.WriteLine(this.instanceName);
   }

   public void DisplayToWindow()
   {
      MessageBox.Show(this.instanceName);
   }
}

public class testTestDelegate
{
   public static void Main()
   {
      Name testName = new Name("Koani");
      Action showMethod = testName.DisplayToWindow;
      showMethod();
   }
}


Sie können den Action-Delegaten auch mit anonymen Methoden in C# verwenden, wie im folgenden Beispiel veranschaulicht wird. (Eine Einführung in anonyme Methoden finden Sie unter Anonyme Methoden (C#-Programmierhandbuch).)


using System;
using System.Windows.Forms;

public class Name
{
   private string instanceName;

   public Name(string name)
   {
      this.instanceName = name;
   }

   public void DisplayToConsole()
   {
      Console.WriteLine(this.instanceName);
   }

   public void DisplayToWindow()
   {
      MessageBox.Show(this.instanceName);
   }
}

public class Anonymous
{
   public static void Main()
   {
      Name testName = new Name("Koani");
      Action showMethod = delegate() { testName.DisplayToWindow();} ;
      showMethod();
   }
}


Sie können einer Action-Delegatinstanz auch einen Lambda-Ausdruck zuweisen, wie im folgenden Beispiel veranschaulicht wird. (Eine Einführung in Lambda-Ausdrücke finden Sie unter Lambda-Ausdrücke (C#-Programmierhandbuch).)


using System;
using System.Windows.Forms;

public class Name
{
   private string instanceName;

   public Name(string name)
   {
      this.instanceName = name;
   }

   public void DisplayToConsole()
   {
      Console.WriteLine(this.instanceName);
   }

   public void DisplayToWindow()
   {
      MessageBox.Show(this.instanceName);
   }
}

public class LambdaExpression
{
   public static void Main()
   {
      Name testName = new Name("Koani");
      Action showMethod = () => testName.DisplayToWindow();
      showMethod();
   }
}


.NET Framework

Unterstützt in: 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Unterstützt in:

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Datum

Versionsgeschichte

Grund

Juni 2010

Der Visual Basic-Lambda-Ausdruck wurde geändert, um das Sub-Schlüsselwort zu verwenden.

Kundenfeedback.

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ