Maison  >  Article  >  développement back-end  >  Exemple de partage de code pour la délégation générique en C# (image)

Exemple de partage de code pour la délégation générique en C# (image)

黄舟
黄舟original
2017-03-29 11:23:291310parcourir

Cet article présente principalement le délégué générique en c#. Il a une très bonne valeur de référence. Jetons-y un coup d'œil avec l'éditeur

Aujourd'hui, nous allons découvrir la délégation générique en c#.

1. Délégué général, délégué, peut passer des paramètres (<=32), la méthode déclarée est public délégué void SomethingDelegate(int a);

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace delegateSummary {
 public delegate void GetIntDelegate(int a); //声明一个委托
 public class getIntClass { 
 public static void SetDelegateString(int a,GetIntDelegate getIntDelegate) {//使用委托
  getIntDelegate(a);
 }
 public void getInt1(int a) { //方法1
  Console.WriteLine("getInt1方法调用,参数为:" + a);
 }
 public void getInt2(int a) { //方法2
  Console.WriteLine("getInt2方法调用,参数为:" + a);
 }
 }
 class Program {
 static void Main(string[] args) {
  getIntClass gc=new getIntClass();
  getIntClass.SetDelegateString(5, gc.getInt1);  //方法1,2作为委托的参数
  getIntClass.SetDelegateString(10, gc.getInt2); 
  Console.WriteLine("=====================");
  GetIntDelegate getIntDelegate;
  getIntDelegate = gc.getInt1;     //将方法1,2绑定到委托
  getIntDelegate += gc.getInt2;
  getIntClass.SetDelegateString(100, getIntDelegate); 
  Console.Read();
 } 
 }
}

Affichez le résultat. Notez la différence entre les deux méthodes. La première méthode utilise la méthode comme paramètre du délégué et la seconde méthode lie la méthode au délégué.

2. Le délégué générique Action peut transmettre jusqu'à 16 paramètres et n'a aucune valeur de retour.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace delegateSummary {
 class Program {
 static void Main(string[] args) {
  TestAction<string>(getString, "WhiteTaken"); //传入方法
  TestAction<int>(getInt, 666);
  TestAction<int, string>(getStringAndInt, 666, "WhiteTaken");
  Console.Read();  
 }
 public static void TestAction<T>(Action<T> action,T p1) {        //Action传入一个参数测试
  action(p1);
 }
 public static void TestAction<T, P>(Action<T, P> action, T p1, P p2) { //Action传入两个参数测试
  action(p1,p2);
 }
 public static void getString(string a) {    //实现int类型打印
  Console.WriteLine("测试Action,传入string,并且传入的参数为:" +a);
 }
 public static void getInt(int a) {     //实现String类型打印
  Console.WriteLine("测试Action,传入int,并且传入的参数为:" + a);
 }
 public static void getStringAndInt(int a, string name) {    //实现int+string类型打印
  Console.WriteLine("测试Action,传入两参数,并且传入的参数为:" + a+":"+name);
 }
 }
}

Résultats des tests :

3. Le délégué générique Func peut transmettre jusqu'à 16 paramètres et renvoyer une valeur. (La méthode d'écriture est similaire à Action, mais avec une valeur de retour supplémentaire)

4 Le prédicat du délégué générique (peu couramment utilisé), la valeur de retour est bool, utilisée. dans ArrayRecherchez éléments dans et list. (Je ne l'ai pas encore utilisé, je le mettrai à jour quand je l'utiliserai)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn