C#の匿名メソッドとは?基本の仕組みと使い方を実例付きで解説
匿名メソッド(Anonymous Method)とは、その名の通り「名前を持たないメソッド」のことです。C#では、コードブロックをデリゲートのパラメータとして直接渡すための手法として利用されます。
通常のメソッドのように事前に宣言して名前を付ける必要がなく、デリゲートインスタンスを作成するタイミングで、delegateキーワードを使ってその場で定義できるのが大きな特徴です。処理が短く、他の場所から再利用する必要がない場合に特に便利です。
匿名メソッドの基本的な書き方
匿名メソッドは、デリゲート型の変数にdelegateキーワードを用いて代入することで宣言します。以下のような形式になります。
delegate(引数) {
// 処理内容
};サンプルコード
次の例では、まず匿名メソッドでデリゲートを生成して呼び出し、その後、名前付きメソッドでも同じデリゲートを呼び出しています。両者の違いを比較してみましょう。
using System;
delegate void Demo(int n);
namespace DelegateAppl {
class TestDelegate {
static int num = 50;
public static void AddNum(int p) {
num += p;
Console.WriteLine("Named Method: {0}", num);
}
public static void MultNum(int q) {
num *= q;
Console.WriteLine("Named Method: {0}", num);
}
public static int getNum() {
return num;
}
static void Main(string[] args) {
// 匿名メソッドを使ってデリゲートインスタンスを作成
Demo d = delegate(int x) {
Console.WriteLine("Anonymous Method: {0}", x);
};
// 匿名メソッド経由でデリゲートを呼び出し
d(100);
// 名前付きメソッドでデリゲートをインスタンス化
d = new Demo(AddNum);
// 名前付きメソッド経由でデリゲートを呼び出し
d(5);
// 別の名前付きメソッドでデリゲートをインスタンス化
d = new Demo(MultNum);
// 名前付きメソッド経由でデリゲートを呼び出し
d(2);
Console.ReadKey();
}
}
}実行結果
Anonymous Method: 100 Named Method: 55 Named Method: 110
コードのポイント解説
上記のプログラムにおける匿名メソッドの部分は、以下のコードです。
Demo d = delegate(int x) {
Console.WriteLine("Anonymous Method: {0}", x);
};このコードでは、int型の引数xを受け取り、コンソールに値を出力するだけの処理を、名前を付けずにその場で定義しています。d(100);と呼び出すことで、「Anonymous Method: 100」と表示されます。
その後、同じ変数dに名前付きメソッドAddNumやMultNumを代入し直すことで、デリゲートの中身を差し替えて再利用している点にも注目してください。このように、匿名メソッドは一時的な処理を簡潔に記述でき、名前付きメソッドと柔軟に組み合わせて使うことができます。
まとめ
- 匿名メソッドは名前を持たないメソッドであり、コードブロックをデリゲートに渡すために使われる
delegateキーワードを使い、デリゲートインスタンスの作成時にその場で定義する- 短い一時的な処理や、イベントハンドラなどでの簡潔な記述に適している
-
Javaのクラスメソッド(静的メソッド)とは?基本から使い方まで解説
Javaにおけるクラスメソッド(静的メソッド)とは、特定のオブジェクトのインスタンスではなく、クラスそのものに対して呼び出されるメソッドのことです。static修飾子を付けることで、すべてのクラスインスタンス間で同じ実装が保証されます。静的メソッドはインスタンス化せずに呼び出すことができるため、アクセスできるのはクラス内の他の静的メンバー(staticなフィールドやメソッド)のみです。インスタンス変数や非staticメソッドには直接アクセスできない点に注意しましょう。Javaの標準ライブラリにも多くの静的メソッドが用意されています。代表的な例としては、Math.random()、System.
-
Pythonの静的メソッド(@staticmethod)とは?仕組みと使い方を解説
Pythonのクラスには、インスタンスメソッド、クラスメソッド、静的メソッド(スタティックメソッド)という3種類のメソッドを定義できます。それぞれ役割や呼び出し方が異なり、適切に使い分けることでコードの可読性と保守性が向上します。3種類のメソッドの違いインスタンスメソッド: 第1引数に self を受け取り、オブジェクト(インスタンス)の状態にアクセス・変更できます。クラスメソッド: @classmethod デコレータを付け、第1引数に cls を受け取り、クラス自体の状態にアクセスできます。静的メソッド: @staticmethod デコレータを付け、self も cls も受け取りません