Для чего нужны object sender и this - C#

Узнай цену своей работы

Формулировка задачи:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
 
class AccountEventArgs
{
    // Соббщение
    public string message;
    // Сумма, на которую изменился счет
    public int sum;
 
    public AccountEventArgs(string _mes, int _sum)
    {
        message = _mes;
        sum = _sum;
    }
}
 
class Account
{
    public delegate void AccountStateHandler(object sender, AccountEventArgs e);
 
    // Событие, возникающее при выводе денег
    public event AccountStateHandler Withdrowed;
    // Событие, возникающее при добавлении денег на счет
    public event AccountStateHandler Added;
 
    int _sum; // Переменная для хранения суммы
    int _percentage; // Переменная для хранения процента
 
    public Account (int sum, int percentage)
    {
        _sum = sum;
        _percentage = percentage;
    }
 
    public int CurrentSum
    {
        get { return _sum; }
    }
 
    public void Put(int sum)
    {
        _sum += sum;
        if (Added != null)
            Added(this, new AccountEventArgs("На счет поступило " + sum, sum));
    }
 
    public void Withdraw(int sum)
    {
        if (sum <= _sum)
        {
            _sum -= sum;
 
            if (Withdrowed != null)
                Withdrowed(this, new AccountEventArgs("Сумма " + sum + " снята со счета", sum));
        }
        else
        {
            if (Withdrowed != null)
                Withdrowed(this, new AccountEventArgs("Недостаточно денег на счете", sum));
        }
    }
 
    public int Percentage
    {
        get { return _percentage; }
    }
}
 
class Program
{
    static void Main()
    {
        Account account = new Account(200, 6); // создаем банковский счет
 
        // Добавляем обраотчики события
        account.Added += Show_Message;
        account.Withdrowed += Show_Message;
 
        account.Withdraw(100);
        account.Withdrowed -= Show_Message; // Удаляем обработчик события
 
        account.Withdraw(50);
        account.Put(150);
        
        ReadLine();
    }
 
    private static void Show_Message(object sender, AccountEventArgs e)
    {
        WriteLine("Сумма транзакции: {0}", e.sum);
        WriteLine(e.message);
    }
}
С какой целью и как работают object sender и this, что и куда здесь передается?
public delegate void AccountStateHandler(object sender, AccountEventArgs e);
Added(this, new AccountEventArgs("На счет поступило " + sum, sum));
private static void Show_Message(object sender, AccountEventArgs e)
    {
        WriteLine("Сумма транзакции: {0}", e.sum);
        WriteLine(e.message);
    }

Решение задачи: «Для чего нужны object sender и this»

textual
Листинг программы
void Button_Click(object sender, EventArgs e)
{
   var button = sender as Button;
   button.Background = Color.Green;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы