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

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

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

Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using static System.Console;
  7. class AccountEventArgs
  8. {
  9. // Соббщение
  10. public string message;
  11. // Сумма, на которую изменился счет
  12. public int sum;
  13. public AccountEventArgs(string _mes, int _sum)
  14. {
  15. message = _mes;
  16. sum = _sum;
  17. }
  18. }
  19. class Account
  20. {
  21. public delegate void AccountStateHandler(object sender, AccountEventArgs e);
  22. // Событие, возникающее при выводе денег
  23. public event AccountStateHandler Withdrowed;
  24. // Событие, возникающее при добавлении денег на счет
  25. public event AccountStateHandler Added;
  26. int _sum; // Переменная для хранения суммы
  27. int _percentage; // Переменная для хранения процента
  28. public Account (int sum, int percentage)
  29. {
  30. _sum = sum;
  31. _percentage = percentage;
  32. }
  33. public int CurrentSum
  34. {
  35. get { return _sum; }
  36. }
  37. public void Put(int sum)
  38. {
  39. _sum += sum;
  40. if (Added != null)
  41. Added(this, new AccountEventArgs("На счет поступило " + sum, sum));
  42. }
  43. public void Withdraw(int sum)
  44. {
  45. if (sum <= _sum)
  46. {
  47. _sum -= sum;
  48. if (Withdrowed != null)
  49. Withdrowed(this, new AccountEventArgs("Сумма " + sum + " снята со счета", sum));
  50. }
  51. else
  52. {
  53. if (Withdrowed != null)
  54. Withdrowed(this, new AccountEventArgs("Недостаточно денег на счете", sum));
  55. }
  56. }
  57. public int Percentage
  58. {
  59. get { return _percentage; }
  60. }
  61. }
  62. class Program
  63. {
  64. static void Main()
  65. {
  66. Account account = new Account(200, 6); // создаем банковский счет
  67. // Добавляем обраотчики события
  68. account.Added += Show_Message;
  69. account.Withdrowed += Show_Message;
  70. account.Withdraw(100);
  71. account.Withdrowed -= Show_Message; // Удаляем обработчик события
  72. account.Withdraw(50);
  73. account.Put(150);
  74. ReadLine();
  75. }
  76. private static void Show_Message(object sender, AccountEventArgs e)
  77. {
  78. WriteLine("Сумма транзакции: {0}", e.sum);
  79. WriteLine(e.message);
  80. }
  81. }
С какой целью и как работают object sender и this, что и куда здесь передается?
Листинг программы
  1. public delegate void AccountStateHandler(object sender, AccountEventArgs e);
  2. Added(this, new AccountEventArgs("На счет поступило " + sum, sum));
  3. private static void Show_Message(object sender, AccountEventArgs e)
  4. {
  5. WriteLine("Сумма транзакции: {0}", e.sum);
  6. WriteLine(e.message);
  7. }

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

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

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


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

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

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы