Tutoriel C#SE CONNECTER
Tutoriel C#
auteur:php.cn  temps de mise à jour:2022-04-11 14:06:23

Méthodes anonymes C#



Nous avons déjà mentionné qu'un délégué est utilisé pour faire référence à une méthode qui a le même label qu'elle. En d’autres termes, vous pouvez utiliser un objet délégué pour appeler des méthodes pouvant être référencées par le délégué.

Les méthodes anonymes fournissent une technique pour transmettre des blocs de code en tant que paramètres délégués. Les méthodes anonymes sont des méthodes qui n’ont pas de nom mais seulement un corps.

Dans les méthodes anonymes, vous n'avez pas besoin de spécifier le type de retour, il est déduit de l'instruction return dans le corps de la méthode.

Syntaxe d'écriture de méthodes anonymes

Les méthodes anonymes sont déclarées en créant une instance de délégué à l'aide du mot-clé delegate. Par exemple :

delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x)
{
    Console.WriteLine("Anonymous Method: {0}", x);
};

Code block Console.WriteLine("Anonymous Method: {0}", x); est le corps de la méthode anonyme.

Un délégué peut être appelé via une méthode anonyme ou une méthode nommée, c'est à dire en passant des arguments de méthode à l'objet délégué.

Par exemple :

nc(10);

Exemple

L'exemple suivant démontre le concept de méthodes anonymes :

using System;

delegate void NumberChanger(int n);
namespace DelegateAppl
{
    class TestDelegate
    {
        static int num = 10;
        public static void AddNum(int p)
        {
            num += p;
            Console.WriteLine("Named Method: {0}", num);
        }

        public static void MultNum(int q)
        {
            num *= q;
            Console.WriteLine("Named Method: {0}", num);
        }
        public static int getNum()
        {
            return num;
        }

        static void Main(string[] args)
        {
            // 使用匿名方法创建委托实例
            NumberChanger nc = delegate(int x)
            {
               Console.WriteLine("Anonymous Method: {0}", x);
            };
            
            // 使用匿名方法调用委托
            nc(10);

            // 使用命名方法实例化委托
            nc =  new NumberChanger(AddNum);
            
            // 使用命名方法调用委托
            nc(5);

            // 使用另一个命名方法实例化委托
            nc =  new NumberChanger(MultNum);
            
            // 使用命名方法调用委托
            nc(2);
            Console.ReadKey();
        }
    }
}

Lorsque le code ci-dessus est compilé et exécuté, il produira les résultats suivants :

Anonymous Method: 10
Named Method: 15
Named Method: 30

Site Web PHP chinois