Action Delegat
TOC
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern
Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Action-Delegat

 

Kapselt eine Methode, die über keinen 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. Der gekapselte Methode muss der Methodensignatur entsprechen, die von diesem Delegaten definiert ist. Dies bedeutet, dass die gekapselte Methode keine Parameter und keinen Rückgabewert verfügen muss. (In c# muss die Methode zurückgeben void. In Visual Basic, sie müssen definiert werden, durch die Sub...End Sub erstellen. Sie können auch eine Methode, die einen Wert zurückgibt, der ignoriert wird sein.) In der Regel wird eine solche Methode verwendet, einen Vorgang auszuführen.

System_CAPS_noteHinweis

Um eine Methode zu verweisen, die über keine Parameter verfügt und einen Wert zurückgibt, verwenden Sie die generischen Func<TResult> stattdessen delegieren.

Bei Verwendung der Action Delegaten, Sie müssen nicht explizit einen Delegaten definieren, der eine parameterlose Prozedur kapselt. Der folgende Code deklariert beispielsweise explizit einen Delegaten mit dem Namen ShowValue und weist einen Verweis auf die Name.DisplayToWindow Instanzmethode-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 folgende Beispiel wird dieser Code vereinfacht, durch die Instanziierung der Action Delegaten nicht explizit einen neuen Delegaten definieren und 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 auch die Action -Delegaten mit anonymen Methoden in c#, wie im folgenden Beispiel veranschaulicht. (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 auch einen Lambda-Ausdruck zuweisen einer Action -Delegatinstanz, wie im folgenden Beispiel veranschaulicht. (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();
   }
}

Universal Windows Platform
Verfügbar seit 8
.NET Framework
Verfügbar seit 3.5
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen:
© 2016 Microsoft