Я изучаю делегатов. Несколько дней назад я сделал образец для делегатов многоадресной рассылки и рассмотрел здесь My previous question и четко понял делегат многоадресной рассылки.Делегат и событие многоадресной передачи
Но теперь я пытаюсь сделать образец делегата многоадресной передачи с событием. Но у меня возникли некоторые сомнения при выполнении выборки. В приведенной выше ссылке я выполнил все функции и делегировал объявление в одном классе и добавил функцию для делегирования с помощью + = и просто вызвал делегат. Таким образом, вся функция внутри делегата вызывается.
Но теперь я делаю это в двух разных классах и пытаюсь выполнять все функции с помощью события. Я предоставляю свой текущий код ниже.
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, функция PerformCalculation() в классе ArithmeticOperations будет выполняться.
Но я сомневаюсь, как зарегистрировать все функции Add, Sub, Mul и Div для делегата в классе ArithmeticOperations, чтобы вызвать все функции, просто вызвав объект делегата и вернув «Успех операции» в функцию обратного вызова события в Form1 класс ?
Ваш тип делегата 'BasicCalculations' (который вложен в классе, почему?) имеет сиговых nature 'BasicCalculations (string msg)', поэтому он принимает один аргумент, который является 'string'. Ваш метод 'Add' и т. Д. Принимает два аргумента, оба из которых -' int'. Итак, как этот метод может напрямую вписаться в ваше мероприятие? –
К сожалению ... Я этого не видел ... ur right ... thankx – Arun