ホームページ  >  記事  >  バックエンド開発  >  C# での汎用委任のサンプル コード共有 (写真)

C# での汎用委任のサンプル コード共有 (写真)

黄舟
黄舟オリジナル
2017-03-29 11:23:291308ブラウズ

この記事では主に c# の汎用デリゲートを紹介します。非常に優れた参考値なので、エディターで見てみましょう

今日は C# の汎用委任について学びます。

1. 一般的なデリゲート、デリゲートはパラメータ (<=32) を渡すことができ、宣言されたメソッドは 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();
 } 
 }
}

出力結果、2 つのメソッドの違いに注意してください, 1 つ目はメソッドをデリゲートのパラメーターとして受け取り、2 つ目はメソッドをデリゲートにバインドします。

2. 汎用デリゲート Action は最大 16 個のパラメーターを渡すことができ、戻り値はありません。

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

テスト結果:

3. 汎用デリゲート Func は最大 16 個のパラメーターを渡し、戻り値を持ちます。 (書き込み方法は Action に似ていますが、戻り値が追加されています)

4. 汎用デリゲートの述語 (あまり一般的には使用されません)、戻り値は bool で、Arraylist で使用されます。 要素を検索します。 (まだ使っていないので、使ったら更新します)

以上がC# での汎用委任のサンプル コード共有 (写真)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。