.NET TIPS

汎用的に使用できる定義済みのデリゲート型は?[C#、VB]

デジタルアドバンテージ 遠藤 孝信
2008/04/10

 .NET Framework 2.0のジェネリックや.NET Framework 3.5でのラムダ式などの導入により、C#やVBでデリゲートの仕組みを使用する機会が増えている。これに伴い、.NET Frameworkのクラス・ライブラリには、汎用的に使用できるデリゲート型の定義が多く追加されている。

 ここでは、そのような定義済みのデリゲート型をまとめてみた。以下の2つの表はそれをC#およびVisual Basic(以下、VB)で表記したものだ。MethodInvoker型はSystem.Windows.Forms名前空間で定義されているが、それ以外はすべてSystem空間で定義されている。

デリゲート型 利用
可能
環境
void Action()
3.5
void Action<T>(T obj)
2.0〜
void Action<T1, T2>(T1 arg1, T2 arg2)
3.5
void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3)
3.5
void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
3.5
TResult Func<TResult>()
3.5
TResult Func<T, TResult>(T arg)
3.5
TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2)
3.5
TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3)
3.5
TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
3.5
int Comparison<T>(T x, T y)
2.0〜
TOutput Converter<TInput, TOutput>(TInput input)
2.0〜
bool Predicate<T>(T obj)
2.0〜
void MethodInvoker()
1.0〜
クラス・ライブラリで定義されている汎用的なデリゲート型(C#)
利用可能環境の番号は.NET Frameworkのバージョンを表す。

デリゲート型 利用
可能
環境
Sub Action()
3.5
Sub Action(Of T)(ByVal obj As T)
2.0〜
Sub Action(Of T1, T2)(ByVal arg1 As T1, ByVal arg2 As T2)
3.5
Sub Action(Of T1, T2, T3)(ByVal arg1 As T1, ByVal arg2 As T2, ByVal arg3 As T3)
3.5
Sub Action(Of T1, T2, T3, T4)(ByVal arg1 As T1, ByVal arg2 As T2, ByVal arg3 As T3, ByVal arg4 As T4)
3.5
Function Func(Of TResult)() As TResult
3.5
Function Func(Of T, TResult)(ByVal arg As T) As TResult
3.5
Function Func(Of T1, T2, TResult)(ByVal arg1 As T1, ByVal arg2 As T2) As TResult
3.5
Function Func(Of T1, T2, T3, TResult)(ByVal arg1 As T1, ByVal arg2 As T2, ByVal arg3 As T3) As TResult
3.5
Function Func(Of T1, T2, T3, T4, TResult)(ByVal arg1 As T1, ByVal arg2 As T2, ByVal arg3 As T3, ByVal arg4 As T4) As TResult
3.5
Function Comparison(Of T)(ByVal x As T, ByVal y As T) As Integer
2.0〜
Function Converter(Of TInput, TOutput)(ByVal input As TInput) As TOutput
2.0〜
Function Predicate(Of T)(ByVal obj As T) As Boolean
2.0〜
Sub MethodInvoker()
1.0〜
クラス・ライブラリで定義されている汎用的なデリゲート型(VB)
利用可能環境の番号は.NET Frameworkのバージョンを表す。

 この表からも分かるように、.NET Framework 3.5ではジェネリック・デリゲートであるAction型*とFunction型が用意されているため、引数が4つまでであれば、すべてのタイプのメソッドに対応することができる。

* Action<T>デリゲート型だけは.NET Framework 2.0で追加されていた。

 このため.NET Framework 3.5では、たいていの場合において自分でデリゲート型を宣言する必要がなくなったといえるだろう。End of Article

カテゴリ:C# 処理対象:データ型
カテゴリ:Visual Basic 処理対象:データ型
使用ライブラリ:Actionデリゲート(System名前空間)
使用ライブラリ:Funcデリゲート(System名前空間)
使用ライブラリ:Comparisonデリゲート(System名前空間)
使用ライブラリ:Converterデリゲート(System名前空間)
使用ライブラリ:Predicateデリゲート(System名前空間)
使用ライブラリ:MethodInvokerデリゲート(System.Windows.Forms名前空間)

この記事と関連性の高い別の.NET TIPS
ControlクラスのInvokeメソッドで匿名メソッドを使うには?
タイマにより一定時間間隔で処理を行うには?(スレッドタイマ編)
スレッドの開始時にパラメータを渡すには?
レジストリの値のデータ型を明示的に識別・設定するには?
Windows 7に標準で含まれる.NET Frameworkのバージョンは?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間