私はデリゲートについて勉強しています。数日前、私はマルチキャストデリゲートのサンプルを作成し、ここで以前の質問を確認し、マルチキャストデリゲートについて明確に理解しました。
しかし今、私はイベントでマルチキャストデリゲートサンプルを実行しようとしています。しかし、サンプルを作成しているときにいくつか疑問がありました。上記のリンクでは、すべての関数とデリゲート宣言を1つのクラスで実行し、+ =を使用して関数をデリゲートに追加し、デリゲートを呼び出すだけです。したがって、デリゲート内のすべての関数が呼び出されます。
しかし今、私は2つの異なるクラスでそれを行っており、イベントの助けを借りてすべての機能を実行しようとしています。現在のコードを以下に示します。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ArithmeticOperations aOperations = new ArithmeticOperations();
aOperations.StartCalculations += new ArithmeticOperations.BasicCalculations(aOperations_StartCalculations);
aOperations.PerformCalculations(20, 10);
}
void aOperations_StartCalculations(string msg)
{
MessageBox.Show(msg);
}
}
class ArithmeticOperations
{
public delegate void BasicCalculations(string msg);
public event BasicCalculations StartCalculations;
public void PerformCalculations(int n1, int n2)
{
StartCalculations("Operation Success");
}
void Add(int num1, int num2)
{
MessageBox.Show("Performing addition.");
}
void Sub(int num1, int num2)
{
MessageBox.Show("Performing substraction.");
}
void Mul(int num1, int num2)
{
MessageBox.Show("Performing multiplication.");
}
void Div(int num1, int num2)
{
MessageBox.Show("Performing division.");
}
}
ここForm1には私のメインクラスがあり、ArithmeticOperationsクラスは機能を実行するために使用しています。この声明のとき
aOperations.PerformCalculations(20, 10);
Form1では、ArithmeticOperationsクラスのPerformCalculation()関数が実行されます。
しかし、私の疑問は、すべてのAdd、Sub、Mul、およびDiv関数をArithmeticOperationsクラスのデリゲートに登録して、デリゲートオブジェクトを呼び出すだけですべての関数を呼び出し、Form1クラスのイベントコールバック関数に「OperationSuccess」を返す方法です。