Exporter (0) Imprimer
Développer tout
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Action, délégué

Encapsule une méthode n'ayant aucun paramètre et ne retournant aucune valeur.

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)

public delegate void Action()

Vous pouvez utiliser ce délégué pour passer une méthode en tant que paramètre sans déclarer explicitement un délégué personnalisé. La méthode encapsulée doit correspondre à la signature de méthode définie par ce délégué. Cela signifie que la méthode encapsulée ne doit avoir aucun paramètre ni valeur de retour. (En C#, la méthode doit retourner void. En Visual Basic, elle doit être définie par la construction SubEnd Sub. Il peut également s'agir d'une méthode qui retourne une valeur qui est ignorée.) En général, une telle méthode est utilisée pour exécuter une opération.

RemarqueRemarque

Pour référencer une méthode n'ayant aucun paramètre et retournant une valeur, utilisez plutôt le délégué générique Func<TResult>.

Lorsque vous utilisez le délégué Action, vous n'avez pas à définir explicitement un délégué qui encapsule une procédure sans paramètre. Par exemple, le code suivant déclare explicitement un délégué nommé ShowValue et assigne une référence à la méthode d'instance Name.DisplayToWindow à son instance de délégué.


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


L'exemple suivant simplifie ce code en instanciant le délégué Action plutôt qu'en définissant explicitement un nouveau délégué avant de lui assigner une méthode nommée.


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


Vous pouvez également utiliser le délégué Action avec les méthodes anonymes en C#, comme l'illustre l'exemple suivant. (Pour obtenir une introduction aux méthodes anonymes, consultez Méthodes anonymes (Guide de programmation C#).)


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


Vous pouvez également assigner une expression lambda à une instance de délégué Action, comme l'illustre l'exemple suivant. (Pour obtenir une introduction aux expressions lambda, consultez Expressions lambda (Guide de programmation C#).)


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

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

.NET pour les applications du Windows Store

Pris en charge dans : Windows 8

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft