ホームページ バックエンド開発 C#.Net チュートリアル C# での汎用委任のサンプル コード共有 (写真)

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

Mar 29, 2017 am 11:23 AM
c#

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

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

1. 一般的なデリゲート、デリゲートはパラメータ (<=32) を渡すことができ、宣言されたメソッドは public delegate void SomethingDelegate(int a);

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

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 個のパラメーターを渡すことができ、戻り値はありません。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C# を使用した Active Directory C# を使用した Active Directory Sep 03, 2024 pm 03:33 PM

C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# の乱数ジェネレーター C# の乱数ジェネレーター Sep 03, 2024 pm 03:34 PM

C# の乱数ジェネレーターのガイド。ここでは、乱数ジェネレーターの仕組み、擬似乱数の概念、安全な数値について説明します。

C# データ グリッド ビュー C# データ グリッド ビュー Sep 03, 2024 pm 03:32 PM

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

C# の階乗 C# の階乗 Sep 03, 2024 pm 03:34 PM

C# の Factorial のガイド。ここでは、C# での階乗の概要について、さまざまな例とコード実装とともに説明します。

マルチスレッドと非同期C#の違い マルチスレッドと非同期C#の違い Apr 03, 2025 pm 02:57 PM

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。

C# のパターン C# のパターン Sep 03, 2024 pm 03:33 PM

C# のパターンのガイド。ここでは、C# のパターンの概要と上位 3 種類について、その例とコード実装とともに説明します。

C# の素数 C# の素数 Sep 03, 2024 pm 03:35 PM

C# の素数ガイド。ここでは、C# における素数の導入と例を、コードの実装とともに説明します。

C#対C:歴史、進化、将来の見通し C#対C:歴史、進化、将来の見通し Apr 19, 2025 am 12:07 AM

C#とCの歴史と進化はユニークであり、将来の見通しも異なります。 1.Cは、1983年にBjarnestrostrupによって発明され、オブジェクト指向のプログラミングをC言語に導入しました。その進化プロセスには、C 11の自動キーワードとラムダ式の導入など、複数の標準化が含まれます。C20概念とコルーチンの導入、将来のパフォーマンスとシステムレベルのプログラミングに焦点を当てます。 2.C#は2000年にMicrosoftによってリリースされました。CとJavaの利点を組み合わせて、その進化はシンプルさと生産性に焦点を当てています。たとえば、C#2.0はジェネリックを導入し、C#5.0は非同期プログラミングを導入しました。これは、将来の開発者の生産性とクラウドコンピューティングに焦点を当てます。

See all articles