Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode-Freigabe für generische Delegation in C# (Bild)

Beispielcode-Freigabe für generische Delegation in C# (Bild)

黄舟
黄舟Original
2017-03-29 11:23:291260Durchsuche

In diesem Artikel wird hauptsächlich der generische Delegat in c# vorgestellt. Es hat einen sehr guten Referenzwert. Schauen wir es uns mit dem Editor an.

Heute lernen wir etwas über generische Delegation in c#.

1. Allgemeiner Delegat, Delegate, kann Parameter übergeben (<=32), die deklarierte Methode ist public Delegate 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();
 } 
 }
}

Geben Sie das Ergebnis aus. Beachten Sie den Unterschied zwischen den beiden Methoden. Die erste Methode verwendet die Methode als Parameter des Delegaten und die zweite Methode bindet die Methode an den Delegaten.

2. Der generische Delegat Aktion kann bis zu 16 Parameter übergeben und hat keinen Rückgabewert.

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

Testergebnisse:

3. Der generische Delegat Func kann bis zu 16 Parameter und Rückgabewerte übergeben. (Die Schreibmethode ähnelt Action, jedoch mit einem zusätzlichen Rückgabewert)

4 Das Prädikat des generischen Delegaten (nicht sehr häufig verwendet), der Rückgabewert ist bool, verwendet in ArraySuchen Sie nach -Elementen in und Liste. (Ich habe es noch nicht verwendet, ich werde es aktualisieren, wenn ich es verwende)

Das obige ist der detaillierte Inhalt vonBeispielcode-Freigabe für generische Delegation in C# (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn