blog

C#-アクション

Actionは、戻り値も引数もないメソッドを指すことができる組み込みのデリゲート型です。ctrl+左クリックすると、Actionが次のように定義されていることがわかります。...

Oct 20, 2020 · 2 min. read
シェア

Actionは、戻り値も引数もないメソッドを指す組み込みのデリゲート型です。ctrl+左クリックで、Actionがこのように定義されていることがわかります:

public delegate void Action();

もう1行説明があります:

//

// 概要

// パラメータを受け取らず、値を返さないメソッドをカプセル化します。

簡単に言うと、Actionを使えば、必要なときに戻り値もパラメータもないデリゲート型を手動で宣言する必要がなく、例えばActionを直接使うことができます:

 1 static void Main(string[] args)
 2 {
 3 Action a = func;
 4 a();
 5 }
 6 public static void func()
 7 {
 8 Console.WriteLine("パラメータも戻り値もないメソッドの例");
 9 }
10 /*
11 * パラメータも戻り値もないメソッドの例
12 */

アクションが参照できるのは、戻り値もパラメータもないメソッドだけです。

Actionを拡張したシステム、つまりAction<>では、Actionで参照されるメソッドのパラメータの数と種類をジェネリック型で指定することができます。

ここでは、2つのパラメータを持つメソッドを参照するAction<>の例を書きました。

 1 static void Main(string[] args)
 2 {
 3 Action<string,string> a = func;
 4 a("hello"," world");
 5 
 6 }
 7 public static void func(string str1,string str2)
 8 {
 9 Console.WriteLine(str1 + str2);
10 }
11 public static void func()
12 {
13 Console.WriteLine("パラメータも戻り値もないメソッドの例");
14 }
15 /*
16 * hello world
17 */

上で使ったfuncメソッドを直接オーバーライドしていることに注意してください。これは、Action<>がパラメータリストにマッチするメソッドを自動的にマッチさせ、見つからなければコンパイルしないことを示しています。

ActionもAction<>も、戻り値を持つメソッドを参照できないことを忘れないでください!

Read next

SAP CRMアプリケーションで添付ファイルのアップロードをサポートするには?

この記事では、CRM7.0 EHP3で開発された新しいCRM - ソーシャルメディアを例にしています。 あなたは、CRM7.0 EHP3で開発された新しいCRM - ソーシャルメディアを使用しているはずです。

Oct 20, 2020 · 2 min read