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!