.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」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH